gpt4 book ai didi

java - Android,即使每个位置的精度检查为 20,位置也会不断变化

转载 作者:太空宇宙 更新时间:2023-11-04 10:31:36 24 4
gpt4 key购买 nike

我一直在开发一款应用程序来跟踪用户运行/行走的距离。

我将 FusedLocationProviderClient 与前台服务结合使用。我为 LocationRequest 对象设置以下参数,

mLocationRequest.setInterval(3000);
mLocationRequest.setFastestInterval(500);
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
mLocationRequest.setSmallestDisplacement(6.4008) //7 yards

并且,为了获取位置更新,

mLocationCallback = new LocationCallback() {
@Override
public void onLocationResult(LocationResult locationResult) {
super.onLocationResult(locationResult);
Location location = locationResult.getLastLocation();

if (mLocation == null) {

if (location.hasAccuracy() && isLocationAccurate(location)) {
mLocation = location;
isGpsAccurate = true;
}

} else {

if (location.hasAccuracy() && isLocationAccurate(location))
calculateDistance(location);
}
}
};

mFusedLocationClient.requestLocationUpdates(mLocationRequest,
mLocationCallback, Looper.myLooper());

这是isLocationAccurate(location)的代码,

boolean isLocationAccurate(Location location) {

float accuracy = location.getAccuracy();

return accuracy > 0 && accuracy < MIN_ACCURACY;
}

这是calculateDistance(location)的代码,

private calculateDistance(location){
distance += mLocation.distanceTo(location);
mLocation = location;
}

这就是代码,在移动时效果很好,但是当静止和室内(有时是室外)时,该值不断变化。

我在这里做错了什么吗?

注意:我已通过 Strava 和 Runkeeper 进行了验证。那里的距离保持不变。所以,我的设备(ONE PLUS 3T)工作正常。

最佳答案

*有一个getSpeed()函数

简单的格式是

if(location.getSpeed() > 50){
计算距离(位置);
}

因此,如果设备处于移动状态,则意味着跟踪将开始,否则无需跟踪,只需在上次更新的位置显示标记

关于java - Android,即使每个位置的精度检查为 20,位置也会不断变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49935477/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com