2013-08-30 94 views
3

GpsStatus.ListenerGpsStatus.Listener一旦您在LocationManager實例上調用removeUpdates,就會停止呼叫。我原本有this我修好的問題。我試圖在基於GPS的位置跟蹤和基於網絡的位置跟蹤之間切換。我已經看過thisthis。他們談論的大多數地方都是同時向兩個提供商請求位置更新。恐怕這種方法會耗盡電池 bigtime。一旦您呼叫取消註冊位置監聽器,Gps狀態監聽器就會停止工作

因此我做了如下的事情。我有兩個LocationListener S:gpsListenerntListener

Listener mGPSListener = new GpsStatus.Listener() { 

    @Override 
    public void onGpsStatusChanged(final int event) { 

     switch (event) { 
      case GpsStatus.GPS_EVENT_STARTED: 
       locMgr.removeUpdates(ntListener); 
       locMgr.requestLocationUpdates(LocationManager.GPS_PROVIDER, 120000, 50, gpsListener); 
       break; 

      case GpsStatus.GPS_EVENT_STOPPED: 
       locMgr.removeUpdates(gpsListener); 
       locMgr.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 120000, 50, ntListener); 
       break; 
     } 


    } 


}; 

現在一次,locMgr.removeUpdates被擊中,onGpsStatusChanged停止獲取調用。我嘗試了幾個東西,例如在調用removeUpdates嘗試不同的gps狀態偵聽器等後添加addGpsStatusListener。尚未成功。難道我做錯了什麼?

回答

0

你必須在這兩個地方調用requestLocationUpdates低於前行補充:

locMgr.addGpsStatusListener(ntListener); 

locMgr.addGpsStatusListener(gpsListener);