2014-06-24 42 views
2

在我的應用程序中,我需要獲取用戶的位置。由於我的應用程序會不斷地執行此操作,因此我想在特定條件下(GPS和NETWORK提供程序之間)更改位置提供程序。我的應用程序將檢測到這些情況並對其進行更改。Android:動態更改位置提供程序

但是,我不確定如何動態改變它。

到目前爲止,我有一個線程(除其他外,將檢查這些條件),我希望它也更改位置提供程序。我的代碼直到現在如下所示:

public void run() { 

    LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
    LocationListener locationController = new LocationController(); 

    locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, time, desltaDistance, locationController); 

    while (serviceIsRunning) { 
     ... 
     if (conditionsAreMet) { 
      locationManager.removeUpdates(locationController); 
      if (provider == LocationManager.GPS_PROVIDER) 
       locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, time, desltaDistance, locationController); 
      else 
       locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, time, deltaDistance, locationController); 
     } 
     ... 
    } 
} 

* LocationController類實現LocationListener。

但是,它似乎不是更好的方式來做到這一點。所以,我想知道的是:有更好的方法來自動更改位置提供程序?

回答

0

由於沒有人回答這個問題,這裏是我如何解決它。

我沒有在提供者之間進行更改,而是爲NETWORK_PROVIDER註冊了一個常量控制器。並且,根據我的情況,GPS_PROVIDER的控制器可能已註冊或未註冊。

爲一個提供者註冊/取消註冊位置請求更容易,而不是在它們之間不斷更改。

+0

嗨,請您簡單回答一下您的答案,我會與一個非常類似的任務鬥爭。 – Solx85

+0

@ Solx85,兩年前我在我的舊工作嘿嘿。我完全不記得代碼,但是如果我仍然可以找到某些東西,我會檢查我的文檔。 :) – Rick