0

我遇到了一个非常愚蠢的问题

lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, ll);
    float spd = myLoc.distanceTo(previousLocation) / (myLoc.getTime() - previousLocation.getTime());

以前的位置是myLoc存储的最后一次onLocationChanged被调用,即每 1 秒后调用一次。

现在我的问题是,有时它会给出非常大的峰值。比平时spd要高得多。

任何人都可以告诉我如何减少这个

最好的祝福

4

1 回答 1

2

一些建议:

  1. 检查Location.hasSpeed()是否为您提供了此信息。它可能比您的计算更可靠,尽管我对用于产生此值的算法一无所知。

  2. 检查Location.getAccuracy()以决定何时忽略计算速度的特定修复。

  3. 仔细阅读这些提示,以查看在处理 GPS 结果时如何选择的示例。它们可能太旧或太不精确而无法用于速度。http://developer.android.com/guide/topics/location/strategies.html#Updates

  4. 对于我工作的应用程序,我实现了一个过滤器,将当前位置与之前的两个位置进行比较,并使用最低计算速度。您可能需要一种或多或少复杂的方法来确定对您有用的速度。

于 2012-08-27T18:21:10.457 回答