2013-03-19 81 views
0

我正在使用GPS。這是我的代碼。getLastKnownLocation返回NULL

public void onCreate() 
{ 
    super.onCreate(); 

    mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
    Location mLocation; 

    if(mLocationManager.isProviderEnabled((LocationManager.GPS_PROVIDER))) 
    { 
     mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER , 2000, 10, myLocationListener); 
     mLocation = mLocationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
     Temp = updateWithNewLocation(mLocation); 
     Value.city = Temp; 
     Temp = ""; 
     LogShow("DataClass.City = " + Value.city); 
     LogShow("GPS_PROVIDER enable"); 
    } 
    } 

我不知道爲什麼getLastKnownLocation返回NULL。所以updateWithNewLocation將是空的。 我使用權限ACCESS FINE LOCATION。

我該如何解決?

+1

'getLastKnownLocation()'如果認爲位置過於過時將返回空值 – 2013-03-19 07:54:44

+0

@raghav表示的過期getLastKnownLocation(),例如,如果設備已關閉並移動到另一個位置。應該通過請求新的位置更新來獲取新位置。另外,我會建議考慮您的準確度和電池限制,以便繼續使用NETWORK_PROVIDER而不是GPS_PROVIDER – 2013-03-19 08:00:49

回答

0

試試這個.....

mGoogleMap.setOnMyLocationButtonClickListener(new OnMyLocationButtonClickListener() { 

        @Override 
        public boolean onMyLocationButtonClick() 
         { 

          Location myLocation = mGoogleMap.getMyLocation(); 
          onLocationChanged(myLocation); 
          return false; 
         } 
       }); 
0

我遇到了同樣的問題。你的代碼是好的。問題在於,當你在室內時gps沒有得到信號,而使用gps提供程序的getLastKnownLocation方法將返回null。當你到戶外時,你的代碼應該正常工作。

相關問題