我已经成功实现了android位置示例http://developer.android.com/training/location/retrieve-current.html
我可以通过按钮点击请求位置更新,并且将触发onLocationChanged方法以使用当前位置更新地图视图。
但请考虑以下问题。当手机位置没有改变时,将不再触发onLocationChange。当用户触摸地图视图并手动滑动到另一个位置时,另一个位置请求将不会触发onLocationChanged,并且地图视图将无法获取当前位置,因为手机位置未更改。
我的问题是,如何在0位置差异的onLocationChanged中收到位置?我使用的是LocationClient和LocationRequest类,而不是LocationManager,所以这不会起作用:
manager.requestLocationUpdates(best, 10000, 1, locationListener);
有什么想法吗?
答案 0 :(得分:0)
使用{CI}的getLastLocation()
方法,它会给你最后一个已知的位置,但有时它可能为null,我在某些设备中观察到,当我重新启动设备并在启动gps或位置之前调用该函数时它返回null客户方法。
答案 1 :(得分:0)
在这种情况下,您可以调用getLastKnownLocation
但是您必须检测该状态,只需尝试打包提供位置的类,并且一旦用R更新它
requestLocationUpdates
监听更新,一旦未触发更新,就会调用getLastKnownLocation
所以,您可以使用包含lastLocation
或最佳location
字段
public class MyLocationProvider implements LocalisationListener{
private Location bestLocation = null;
private LocationManager locationManager;
//constructor and all that stuff...
public Location getBestLocation(){
if(bestLocation == null)
return locationManager.getLastKnownLocation();
else
return bestLocation;
}
//locationListener methods... that should save their result in `bestLocation` field.
}
这是我的想法的简单草稿....我没有编译它;)