如何使用LocationClient更改位置时如何调用onLocationChanged?

时间:2014-05-14 08:39:44

标签: android android-location

我已经成功实现了android位置示例http://developer.android.com/training/location/retrieve-current.html

我可以通过按钮点击请求位置更新,并且将触发onLocationChanged方法以使用当前位置更新地图视图。

但请考虑以下问题。当手机位置没有改变时,将不再触发onLocationChange。当用户触摸地图视图并手动滑动到另一个位置时,另一个位置请求将不会触发onLocationChanged,并且地图视图将无法获取当前位置,因为手机位置未更改。

我的问题是,如何在0位置差异的onLocationChanged中收到位置?我使用的是LocationClient和LocationRequest类,而不是LocationManager,所以这不会起作用:

manager.requestLocationUpdates(best, 10000, 1, locationListener);

有什么想法吗?

2 个答案:

答案 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.

}

这是我的想法的简单草稿....我没有编译它;)

http://developer.android.com/reference/android/location/LocationManager.html#getLastKnownLocation(java.lang.String)