我的应用程序在我的旧HTC One M7计算距离方面效果很好。然而,在我妻子的HTC One M8和我的新索尼Xperia Z3上,它计算的距离是关闭的。它告诉我,我走得比实际还要远。当我正在徒步旅行或跑步时,我更加注意到这一点。如果我正在滑雪,那似乎更准确。我猜测速度与它有关(如果我走得更快,计算更准确)。
我正在调用一种方法来更新每个位置更改的总距离,这样做:
float[] distanceResults = new float[3];
double distanceResult = 0;
try
{
Location.distanceBetween(location.getLatitude(), location.getLongitude(), previousLocation.getLatitude(), previousLocation.getLongitude(), distanceResults);
distanceResult = distanceResults[0];
}
catch(IllegalArgumentException e)
{
distanceResult = 0;
}
// add the new distance to the total distance
totalDistanceValue += distanceResult;
我无法理解为什么它不能在新手机上准确计算。我想过只计算距离每20个位置的变化,但这似乎是一个贫民区解决这个问题......甚至可能无法正常工作。
任何人都有任何想法,为什么当我的节奏较慢时,我的总距离会超过新手机上的距离?
TIA
答案 0 :(得分:0)
当您需要准确性时,您必须使用位置的准确性。可能您已经看到谷歌地图上的圆圈变得更小,因为它在您的位置为零。该圆圈基于位置的准确性。
@Override
public void onLocationChanged(Location location) {
if (!location.hasAccuracy()) {
return;
}
if (location.getAccuracy() > 4) {
return;
}
//process location accurate to 4 meters
}