我正在开发一个Android应用程序,我正试图从服务中跟踪设备的移动。该服务注册自己的位置更新,在这里我们确保我们要求“GPS提供商”而不是网络提供商(这可能是不准确的。)
致电
public void requestLocationUpdates(String provider,long minTime,float minDistance,LocationListener listener)
提供者是“gps”
和minTime和minDistance都设置为零以获得最佳结果。
然而,当设备静止躺在桌面上时,它会获得彼此不同的GPS更新,以便我们实际获得平均速度(通过将距离除以位置更新之间的时间间隔来测量)超过5英里/小时平均最近5次位置更新。
这完全破坏了应用程序逻辑。 Android设备(EVO 4,HTC MyTouch)在完全静止的同时提供不同的位置更新的原因是什么?任何人都可以提出一种方法来清除这些错误的位置更新吗?
非常感谢您的反馈。
感谢。
Pritam。
更新
最后结束了对GPS输入的监控30秒,以确保更新的正常性,以及GPS更新之间稳定的平均速度和时差。
答案 0 :(得分:1)
答案很简单:更改应用程序逻辑。
GPS并不完美。在城市或室内环境中的信号衰减和反射(以及其他因素)将导致更多的不准确性,包括您正在经历的跳跃运动。一个强大的应用程序必须学会处理这个。
您可以尝试编写一个过滤器,以便对以前的位置结果进行基本平均,以平滑输出,但不要期望完美。