2014-02-19 247 views
0

我正在創建一個應用程序,當用戶單擊按鈕時只檢查位置。android getLastKnownLocation()返回總是返回空

這裏是我的代碼,當我打電話getLastKnownLocation返回null,即使我打電話requestLocationUpdates:

public void main(String[] args, int iteration, Context context){ 
    Criteria criteria = new Criteria(); 
    LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); 

    LocationListener loc_listener = new LocationListener() { 
     public void onLocationChanged(Location l) { 
     } 
     public void onProviderEnabled(String p) {} 
     public void onProviderDisabled(String p) {} 
     public void onStatusChanged(String p, int status, Bundle extras) {} 

     }; 

    String bestProvider = locationManager.getBestProvider(criteria, false); 
    locationManager.requestLocationUpdates(bestProvider, 0, 0, loc_listener); 
    Location location = locationManager.getLastKnownLocation(bestProvider); 
    location = locationManager.getLastKnownLocation(bestProvider); 
    double lat; 
    double lon; 
    try { 
     lat = location.getLatitude(); 
     lon = location.getLongitude(); 

    } catch (NullPointerException e) { 
     lat = -1.0; 
     lon = -1.0; 

    } 
    Log.i("results:", String.valueOf(lat) + " " + String.valueOf(lon) + " 10NN");}} 

設備上的定位服務已啓用。 非常感謝!

+0

LastKnownLocation返回最後一個已知的修復。所以它有可能是空的。嘗試看看這裏http://stackoverflow.com/questions/7423624/how-reliable-is-locationmanagers-getlastknownlocation-and-how-often-is-it-updat – alekz

+1

我試圖requestLocationUpdates,它並沒有實際更新最後一個我知道的位置。 –

+0

你有沒有找到解決方案 – Questioner

回答

1

getLastKnownLocation將返回null,直到觸發onLocationChanged()回調。即使天空清晰可見,GPS也可能需要幾分鐘的時間。如果你在室內,它可能永遠不會運行。你必須等待它運行。

+0

我的谷歌地圖立即得到我的位置。它是如何做到的?另外我試圖使用requestLocationUpdates來獲取位置更新。但它似乎沒有工作。 –

1

嘗試這一PLS

mGoogleMap.setOnMyLocationButtonClickListener(new OnMyLocationButtonClickListener() { 

        @Override 
        public boolean onMyLocationButtonClick() 
         { 

          Location myLocation = mGoogleMap.getMyLocation(); 
          onLocationChanged(myLocation); 
          return false; 
         } 
       }); 
相關問題