【发布时间】:2012-03-19 08:44:40
【问题描述】:
如何在 Android 中通过 GPS 获得准确的速度?
是的,我知道Location 类中的location.getSpeed() 方法。问题是,默认实现返回 0.0 作为速度:显然是that is the default behavior。
我目前正在做的,如下,考虑位置对象a和b,其中a先取,b后取:
a.distanceTo(b)/(b.getTime()-a.getTime());
(为了可读性而简化,原始代码处理历史ArrayList)
问题在于这有点不准确:在正常情况下,数据点彼此如此接近,以至于 GPS 不准确确实成为一个问题。我需要降低更新频率或计算相对于更远点的速度。前者我不想做,因为我想获得尽可能高的频率,但也许我可以过滤这些点以根据它们彼此的距离来计算速度?
我假设getSpeed() 方法可以做到的最佳解决方案是根据 GPS 卫星本身计算速度,从而获得更准确的结果。
我是否以某种方式使用了getSpeed() 错误?
【问题讨论】:
-
您好 Visa,我认为您应该在距离中包含 Accuracy 参数,当我们从 Location 类中获取纬度、日志时,它不是 100% 准确的,Location 类有名为“getAccuracy()”的方法。它返回 int - 以米为单位的精度。您应该将其包括在计算中
-
模拟器显然总是回答 0 作为速度,但真正的设备不应该。你在真机上遇到过同样的问题吗?
标签: android performance gps location