来自LocationClient的getLastLocation()始终返回null

时间:2014-05-05 07:05:00

标签: android geolocation

我正在使用LocationClient从网络获取用户位置(无gps)。 我在创建片段期间实例化LocationClient

 mLocationClient = new LocationClient(getActivity(), this, this);
 mLocationClient.connect();

然后是

  if (mLocationClient.isConnected())
  {
    currentLocation = mLocationClient.getLastLocation();
  }

我确信它已连接,但getLastLocation()始终返回null。

但是,它使用LocationManager

    LocationManager locationManager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE);
    currentLocation = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);

我知道我可以使用侦听器进行位置更新,但我想了解为什么getLastLocation()始终返回null。

1 个答案:

答案 0 :(得分:1)

文件说: -

public Location getLastLocation ()
  

返回当前可用的最新位置。如果一个   位置不可用,这应该很少发生,null会   被退回尊重位置时可获得的最佳准确度   权限将被退回。该方法提供了一种简化的方法   得到位置。它特别适合那些应用程序   不需要准确的位置,也不想维护   位置更新的额外逻辑。

您必须使用onLocationChange()方法获取位置: -

@Override
public void onLocationChanged(final Location location) {
      mCurrentLocation = location;
}