Vis*_*nen 5 performance gps android location
如何在 Android 中从 GPS 获取准确的速度?是的,我知道类location.getSpeed()中的方法Location。问题是,默认实现返回 0.0 作为速度:显然这是默认行为。
我目前正在做的事情如下,考虑位置对象 a 和 b,其中先取 a,后取 b:
a.distanceTo(b)/(b.getTime()-a.getTime());
Run Code Online (Sandbox Code Playgroud)
(为了可读性进行了简化,原始代码处理历史ArrayList)
问题是,这有些不准确:在正常情况下,数据点彼此非常接近,以至于 GPS 不准确确实成为一个问题。我要么需要降低更新频率,要么计算相对于更远的点的速度。前者我不想做,因为我想获得尽可能高的频率,但也许我可以过滤点以根据它们彼此之间的距离来计算速度?我认为该getSpeed()方法可以实现的最佳解决方案是根据 GPS 卫星本身计算速度,从而获得更准确的结果。我是否使用了getSpeed()错误的方式?
\n\n\n模拟器显然总是回答 0 作为速度,但真实设备\n 不应该。您在真机上也有同样的问题吗?\xe2\x80\x93 Stefan\n 3 月 20 日 8:21
\n
斯特凡的回答实际上是正确的。显然模拟器没有给出速度,因为它不包含在作为测试数据输入的 GPX 文件中。因此,如果您想展示速度,在真实设备上进行测试并慢跑,它就可以(对于大多数设备)。
\n\n以下是对其他检测速度的方法的一些想法,但并不严格相关,但如果您使用 GPS,可能会很有趣。
\n\n由于 GPS 相对不准确,特别是在低速或弯曲道路上,速度很难计算:要么数据点之间的距离太短,GPS 不准确,要么太长,在不直线行驶时变得不准确。另外,如果计算速度的数据点之间的最小距离很长,则在低速时更新间隔就会成为问题。\n有一些方法可以解决此问题,例如使用 getAccuracy() 方法来计算数据点之间的最小安全距离并动态地使用它,根据最大加速度和减速度值、运动方向等过滤数据点。您还可以计算滚动平均值,以稍微缓和变化并很好地了解是什么。
\n\n即使您不根据行驶距离计算速度,上述方法也可能很有用,因为有时即使您在移动,GPS 似乎也会将速度返回为 0。我使用 F1 赛车的加速/减速数据作为过滤器:)
\n| 归档时间: |
|
| 查看次数: |
6746 次 |
| 最近记录: |