获取位置更新,即使我在同一个地方很长时间
Getting Location updates even if i am in same place for long
我正在使用 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
。
我想要像 google 这样的完美 location
更新,正如我所要求的那样。
当我移动到一定距离时,它会给出多次位置。
我必须检查我的应用程序是否用户在不断移动
如果用户 move/pass 有一段距离,那么我必须检查并做必要的事情。
谢谢。
在 github 上查看 TripTracker。它会帮助你。
位置可能非常不准确(这就是您遇到的静止 phone 距离为 10m - 100m 的情况)。要克服这个问题,请检查新位置的准确性。如果精度为 40 米并且与 lastLocation 的距离为 50 米,则您知道有移动。但是,如果精度是 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
}
}
在使用位置更新时,您可能还需要考虑其他 strategies。
我正在使用 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
。
我想要像 google 这样的完美 location
更新,正如我所要求的那样。
当我移动到一定距离时,它会给出多次位置。
我必须检查我的应用程序是否用户在不断移动
如果用户 move/pass 有一段距离,那么我必须检查并做必要的事情。
谢谢。
在 github 上查看 TripTracker。它会帮助你。
位置可能非常不准确(这就是您遇到的静止 phone 距离为 10m - 100m 的情况)。要克服这个问题,请检查新位置的准确性。如果精度为 40 米并且与 lastLocation 的距离为 50 米,则您知道有移动。但是,如果精度是 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
}
}
在使用位置更新时,您可能还需要考虑其他 strategies。