2014-02-19 195 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; 
         } 
       }); 
相关问题