该getLastLocation()
方法只是获取设备碰巧知道的最后一个已知位置。这里的“最后已知位置”的确切含义是:它可能不是最新的。位置确实带有时间戳,可用于评估该位置是否仍然相关。
设备不会自行确定其位置,而是仅在某些应用程序请求位置时确定。因此,您的应用程序现在依赖于请求位置更新的其他应用程序。
如果您需要每隔几秒更新一次,请自行请求定期更新位置信息。
Android 文档推荐使用 FusedLocationProvider,但如果有任何理由避免使用 Google Play 服务,LocationManager也是一个完全有效的选项。
基本思想是首先请求位置更新:
// Using LocationManager as an example.
mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
// Using GPS, requesting location updates as soon as available and even for
// the smallest changes. Here 'this' refers to our LocationListener
// implementation.
mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
然后由侦听器接收更新:
@Override
public void onLocationChanged(Location location) {
// We received a location update.
// Copy the value from the method parameter to our
// class member variable.
mLocation = location;
}
当您不再需要更新时,您应该取消请求:
mLocationManager.removeUpdates(this);
FusedLocationProvider 的方法非常相似。