2010-10-13 56 views
0

我實現了GPS在我的應用程序,在一個活動是這樣的:的Android GPS監聽器始終運行

LocationManager mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
     LocationListener mlocListener = new MyLocationListener(); 
     mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mlocListener); 

public class MyLocationListener implements LocationListener 
    { 
     public void onLocationChanged(Location location) 
     { 
      if (location != null) { //do something} 
     ... 
     } 

這是工作的罰款。在進一步發展應用之後,我意識到我需要在多個活動中使用GPS。我需要能夠檢查gps是否處於活動狀態以及它從3個活動返回的位置。

想象一下這種情況:用戶啓動應用程序。在用戶選擇某些選項的同時,GPS正試圖獲得衛星連接。當我到達需要位置信息的活動時,我會要求它。

我該如何做到這一點?這應該運行在另一個線程?請建議我。謝謝

回答

2

我已將它實現爲Android Service

public class MyPositioningService extends Service { 
    @Override 
    public void onCreate() { 
    // init LocationManager as you are doing 
    } 

    @Override 
    public void onDestroy() { 
    // LocationManager#removeUpdates 
    } 
} 

當用戶啓動應用程序,您可以啓動它:

Intent i = new Intent(context, MyPositioningService.class);  
context.startService(i); 
+0

非常感謝您的幫助。你可以提供哪些關於電池壽命的提示?只需要某些屏幕上的GPS,我需要能夠在其他人禁用它。不是? – Alin 2010-10-15 16:42:13

+1

好問題。您可以持續啓用/禁用它,但您可能不需要服務。而不是你可以將你的代碼移動到一個幫助類,並從你的3個活動中調用它來獲得目前的修復,只有當你需要它時。你可以做些什麼(如果你使用服務)來節省電池使用時間是使用minTime和minDistance參數調用requestLocationUpdates。這樣你可以得到一個修復,即每5分鐘一次。 – 2010-10-15 19:06:35

+0

我想我會去幫助班。你能否提供一些像服務一樣的代碼示例或指導我學習一個教程。我會盡力在做一些事情。非常感謝你 – Alin 2010-10-16 12:01:45

0

中的onPause()將這種方法會做離開活動時停用:mlocManager.removeUpdates(mlocListener);

如果你有多個活動需要一個GPS偵聽器,我會去幫助類,我把位置管理器和偵聽器。在那裏我會有公開的方法來初始化它們並啓動監聽器,獲取最後一個已知位置並停用更新。不要忘記在活動中添加對接收更新的支持。 下面是一個很好的例子:
Android find GPS location once, show loading dialog