我遇到了一个非常愚蠢的问题
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, ll);
float spd = myLoc.distanceTo(previousLocation) / (myLoc.getTime() - previousLocation.getTime());
先前位置是上次调用 onLocationChanged
时存储的 myLoc
,即每次 1 秒后调用。
现在我的问题是,有时它会给出非常大的峰值。使 spd
比平常高得多。
任何人都可以告诉我如何减少这个
最诚挚的问候
最佳答案
一些建议:
检查
Location.hasSpeed()
以查看是否为您提供了此信息。它可能比您的计算更可靠,尽管我对用于生成该值的算法一无所知。检查
Location.getAccuracy()
以决定何时忽略计算速度的特定修复。仔细阅读这些提示,了解如何在处理 GPS 结果时有选择性的示例。它们可能太旧或太不精确而无法用于提高速度。 http://developer.android.com/guide/topics/location/strategies.html#Updates
对于我开发的应用程序,我实现了一个过滤器,将当前位置与之前的两个位置进行比较,并使用计算出的最低速度。您可能需要一种或多或少复杂的方法来确定对您有用的速度。
关于java - Android GPS 尖峰问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12146904/