即使我在同一个地方呆了很长时间,也会获得位置更新



我正在使用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。它会帮助你。

最新更新