2012-08-04 40 views
2

我需要在整個應用程序中實現一個LocationListener。整個應用程序中的一個LocationListener

我知道我可以在LocationListener中使用服務,但問題是我必須在位置發生變化時使用某個通知程序。只要我能夠獲得最後的位置,這是不夠的,因爲我需要在所有活動中立即更新當前位置。

因此,在僞代碼,我需要類似的東西:

myLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, new LocationListener() {

public void onLocationChanged(Location location) { 
       notifyAllActivities(location); 
      }
};

,並在每個活動時間:

void onNotify(Location location) { //... }

+0

接受適合您的答案,以便其他人可能會覺得它有用。 – 2012-08-06 00:38:37

回答

2

使服務呼叫sendBroadcast()廣播的意圖。將經度/緯度作爲額外內容添加到該意圖。在每個需要位置的活動中,根據意圖註冊BroadcastReceiver並從Intent的附加內容中獲取lng/lat的onReceive()

+0

所以我將不得不在這個服務類中創建我的服務意圖,在那裏添加一些額外的東西,並從這個服務只是sendBroadcast()? 然後,我需要擴展BroadcastReceriver的內部類,並在每個接收只改變我的位置,我在Intent參數? 我理解正確嗎? – squixy 2012-08-05 12:38:12

+1

只需在你的活動中聲明一個新的BroadcastReceiver(),就可以在onReceive中選擇其他的附加組件。確保你在onResume()上註冊它並在onPause()中註銷它。 – NickT 2012-08-05 13:33:33

3

您是否試過使用CommonsWare's LocationPoller library

它被稱爲非常強大,我已經親自在我的一個基於位置的應用程序中使用它。

其中一件好事就是它與使用Service的兼容性;即使應用程序位於後臺,您也需要獲取位置更新。它獲得WakeLock以喚醒電話,獲取位置,然後優雅地釋放它。

+0

我會檢查它,因爲我還不知道這個庫。 – squixy 2012-08-05 12:38:56

+0

設置起來很簡單。裏面還有一個演示。祝你好運! – 2012-08-05 14:42:21

相關問題