我正在开发一个 Android 应用程序,我试图通过服务跟踪设备的移动。该服务会自行注册位置更新,这里我们要确保我们要求的是“GPS 提供商”,而不是网络提供商(这可能不准确。)
通话时
public void requestLocationUpdates (String provider, long minTime, float minDistance, LocationListener listener)
提供者是“gps”
并且 minTime 和 minDistance 都设置为零以获得最佳结果。
然而,当设备静止不动地躺在 table 上时,它获得的 GPS 更新彼此之间差异如此之大,以至于我们实际上获得了超过 5 英里/的平均速度(通过将距离除以位置更新之间的时间间隔来测量)最近 5 次位置更新的 hr 平均值。
这完全破坏了应用程序逻辑。 Android 设备(EVO 4、HTC MyTouch)在完全静止时提供不同位置更新的原因可能是什么?任何人都可以建议一种方法来从正确的位置更新中剔除这些错误的位置更新吗?
非常感谢您的反馈。
谢谢。
普里坦。
更新:
最终监控 GPS 输入 30 秒以了解更新的规律性,以及稳定的平均速度和 GPS 更新之间的时间差。
最佳答案
答案很简单:更改您的应用程序逻辑。
GPS 并不完美。城市或室内环境中的信号衰减和反射(除其他外)会导致更多不准确,包括您正在经历的跳跃运动。一个健壮的应用程序必须学会处理这个问题。
您可以尝试编写一个过滤器来对之前的位置结果进行平均以平滑输出,但不要期望完美。
关于android - 问题 : While stationary Android GPS gives different location updates - Closed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3776635/