我正在使用GoogleApiClient
来获取当前location
以及定期location
更新。我设置了请求位置参数如下:
private static int UPDATE_INTERVAL = 10000; // 10 sec
private static int FATEST_INTERVAL = 5000; // 5 sec
private static int DISPLACEMENT = 10; // 10 meters
并提出这样的请求:
LocationServices.FusedLocationApi.requestLocationUpdates(
mGoogleApiClient, mLocationRequest, this);
所以我的问题是,当我 10 米不移动时,它也打电话给我location
.我想要像谷歌一样完美的location
更新,因为我已经要求了同样的东西。当我移动到一定距离时,它会多次给出位置。我必须在我的应用程序中检查用户是否不断移动如果用户移动/传递一段距离,那么我必须检查并做必要的事情。
谢谢。
位置可能非常不准确(这就是您在距离为 10m - 100m 的固定电话时遇到的)。要解决此问题,请检查新位置的准确性。如果精度为40m,距离最后一个位置的距离为50m,则知道有移动。但是,如果精度是 100m,那么 50m 的距离并不能确定有运动。
因此,如果位置更新的准确性比频率更重要,则可能需要在使用位置信息之前检查其准确性。例如:
private Location lastGoodLocation = null;
// Other methods
@Override
public void onLocationChanged(Location loc) {
if (lastGoodLocation == null || lastGoodLocation.distanceTo(loc) > loc.getAccuracy()) {
lastGoodLocation = loc;
// do something with loc
}
}
在使用位置更新时,您可能还需要考虑其他策略。
在github上查看TripTracker。它会帮助你。