我遇到了 GPS 提供的数据问题。
我在位置更改回调时计算距离
,因此当设备空闲时,由于 GPS 波动,距离会增加。
我一直在使用 FusedLocationProviderClient 获取位置更新。
fusedLocationClient.requestLocationUpdates(locationRequest,
locationCallback, Looper.myLooper());
fusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
mLocationCallback = new LocationCallback() {
@Override
public void onLocationResult(LocationResult locationResult) {
super.onLocationResult(locationResult);
onNewLocation(locationResult.getLastLocation());
}
};
private void createLocationRequest() {
locationRequest = new LocationRequest();
locationRequest.setInterval(UPDATE_INTERVAL_IN_MILLISECONDS);
locationRequest.setFastestInterval(FASTEST_UPDATE_INTERVAL_IN_MILLISECONDS);
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
}
最佳答案
GPS的定位精度不超过4、5米。也就是说,每次计算位置时,它的半径都不会小于 4 米。有时计算出的位置会向前方偏移数米,有时向左、向后等偏移。
如果您不想考虑这些微小的变化,那么您的代码必须能够区分用户是否真的移动了。
是的,这听起来很难,但这是应用程序或 GPS 设备计算接近正确距离的优点。
关于java - 当设备缓慢移动或静止时 GPS 会波动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48184891/