我正在尝试计算Android平台应用中一段时间内经过的距离
最好的方法是什么?
目前,我正在实现LocationListener接口
我重写了onLocationChanged方法
我目前正在做这样的事情:
public void onLocationChanged(Location location) {
Log.d("onLocationChanged", "onLocationChanged");
old_location.set(new_location);
new_location.set(location);
totalDistanceElapsed += new_location.distanceTo(old_location);
}
所以我在调用“onLocationChanged”时添加从旧位置点到新位置点的距离。
它是否正确?
我还需要做其他事吗?
这会准确吗?如果没有,我怎样才能让它更准确?感谢
答案 0 :(得分:3)
确定随时间推移的距离的微不足道的方法是每秒获得修正,并读取并记录每次修复报告的速度(以米/秒为单位)。然后你的行进距离是经过一段时间内所有速度的总和。
如果你想避免将“抖动”计算为移动(即如果由于GPS固定不准确,但是设备实际上是静止的,则修复程序缓慢徘徊)你可以设置一个速度阈值,例如:通过忽略低于某个级别的速度,或者标题在修复之间快速变化。这些阈值可能取决于所使用的GPS设备,有些设备已经内置了这种设备(例如,如果速度太低,它们会报告0 m / s)。
但是,它确实取决于设备。例如,我的早期型号三星Galaxy I9000即使在晴朗的天空条件下也会在半径20米的范围内徘徊,大约每秒半米,所以如果它静止在田地中持续十分钟,上述算法会报告它已经行走了300米。