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

时间:2016-02-03 10:40:34

标签: android location google-api-client

我正在使用GoogleApiClient获取当前location以及定期location更新。 我已经设置了requestLocation参数,如下所示:

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更新,因为我需要相同的。 当我移动到一定距离时,它会给出位置多次。 我必须检查我的应用程序,如果用户不断移动 如果用户移动/通过一段距离,那么我必须检查并做必要的事情。

谢谢。

2 个答案:

答案 0 :(得分:1)

地点可能非常不准确(这是您使用距离为10米-100米的固定电话所遇到的情况)。要解决此问题,请检查新位置的准确性。如果精度是40米并且距离lastLocation的距离是50米,那么您就知道已经移动了。但是,如果精确度为100米,则50米的距离不会告诉您确定存在移动。

因此,如果您的位置更新的准确性比频率更重要,您可能需要在使用之前检查位置的准确性。例如:

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
    }
}

使用位置更新时,您可能还需要考虑其他strategies

答案 1 :(得分:0)

在github上查看TripTracker。它会对你有所帮助。