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. 私が取り組んだアプリでは、現在の場所を以前の 2 つの場所と比較し、計算された最低速度を使用するフィルターを実装しました。役に立つ速度を判断するには、多かれ少なかれ複雑な方法が必要になる場合があります。

于 2012-08-27T18:21:10.457 に答える