GPSロギングアプリケーションの作成〜AndroidのGPS場所スピード信頼できない
私はLocationManager
によって報告Locations
にgetSpeed()
メソッドによって返される値は、大規模な信頼できない見つけることです。私はLocationManager.GPS_PROVIDER
を使用しており、最高の精度のためにonLocationChanged
によって提供される場所をフィルタリングしています。 1桁の精度レベルであっても、返される速度は概して非常に高いです。私たちは、電話が停止しているときに最大200 mp/h(はい、メートル/秒で記録されていることを知っています)を話しています。
2つの異なるモデルのAndroid搭載端末で同じコードベースをテストしています.2つの異なるOSバージョンを実行しているので、同じ問題が発生しているので、これはコードの問題です。
私には何が欠けていますか?私は時間の枠を越えて平均的な場所を試してみましたが、無駄です。私は自分のスピード値を移動距離/時間に基づいて計算しなければなりませんか?これは残念です。
あなたが見るように、私は特別なことをしていません - 正確さのための少しのフィルタリング、この後もAverageSpeed
と_bestLocation.getSpeed()
の両方は、場所の正確さが良好であっても、
public void onLocationChanged(Location location) {
if (location.getAccuracy() < 25f) {
_recentLocations.add(location);
if (_bestLocation == null || location.getAccuracy() <= _bestLocation.getAccuracy())
_bestLocation = location;
}
if ((_bestLocation != null && _bestLocation.getAccuracy() < 10f && _recentLocations.size() >= 10)
|| _recentLocations.size() >= 25)
{
int Count = 0;
float TotalSpeed = 0f;
float AverageSpeed = 0f;
for (int i = 0; i<_recentLocations.size(); i++) {
if (_recentLocations.get(i).hasSpeed()) {
Count++;
TotalSpeed += _recentLocations.get(i).getSpeed();
}
}
if (Count > 0)
AverageSpeed = TotalSpeed/Count;
}
}
を提供あなたにも*異なる*場所でこれを試したことがありますか?いくつかの場所では、あなたは何があってもGPS修正を取得しません。 – Piskvor
私は指定しておくべきです、私は非常に受け入れられるくらい正確な修正を受けています - 典型的には5-10メートルです。場所は可能な限り多様です - 事務所から顧客のサイトや家などへの移動 –
@DanWray hai、この問題を解決しましたか、今でも同じことに苦労しています。 –