2014-05-12 186 views
-1

我試圖獲得我的Android應用程序的位置,但getLastKnownLocation總是返回nullonLocationChanged永遠不會被調用。我爲我的應用使用以下權限:Android的GPS跟蹤問題

ACCESS_NETWORK_STATE, 
ACCESS_FINE_LOCATION ACCESS_COARSE_LOCATION. 

GPS和互聯網已打開,在我的設備上。我也嘗試了requestLocationUpdates的不同值。

 locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); 
     locationManager.removeUpdates(this); 

     isGPSEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); 

     // getting network status 
     isNetworkEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER); 

     if (!isGPSEnabled && !isNetworkEnabled) 
     { 
      // no network provider is enabled 
     } 
     else 
     { 
      hasGPS  = true; 
      location = null; 
      if (isGPSEnabled) 
      { 
       if (location == null) 
       { 
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 
          MIN_TIME_BW_UPDATES, 
          MIN_DISTANCE_CHANGE_FOR_UPDATES, this); 
        if (locationManager != null) 
        { 
         location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
         if (location != null) 
         { 
          lat = location.getLatitude(); 
          lng = location.getLongitude(); 
         } 
        } 
       } 
      } 

      if (isNetworkEnabled && location == null) 
      { 
       locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 
         MIN_TIME_BW_UPDATES, 
         MIN_DISTANCE_CHANGE_FOR_UPDATES, this); 
       if (locationManager != null) 
       { 
        location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 
        if (location != null) 
        { 
         lat = location.getLatitude(); 
         lng = location.getLongitude(); 
        } 
       } 
      } 
     } 
+0

這可能聽起來很傻,但你(即不使用仿真器)上的實際的手機測試正確呢? – jedwards

+0

相關的,可能有助於[這裏](http://stackoverflow.com/questions/19621882/getlastknownlocation-returning-null)和[這裏](http://stackoverflow.com/questions/1608632/android-locationmanager-getlastknownlocation-返回空)。 – jedwards

+0

是的,我用Android 4.1在平板電腦上試過這段代碼。 – user3629312

回答

0

GetLastKnownLocation將返回null,如果它從未有過通過該提供者的位置或位置太舊。所以這並不意外。很可能你沒有得到GPS信號,這可能需要幾秒鐘 - 幾分鐘(或者在很多建築物中完全失敗)。仔細檢查設置中是否打開了GPS,然後查看通知區域中的閃爍圓圈 - 如果它永遠不會變得穩定,則說明您沒有收到信號。

+0

感謝您的提示,圓圈永遠不會變得堅實。我現在會在外面嘗試。 – user3629312