寫一個GPS記錄應用程序〜Android的GPS定位速度不可靠
我發現通過Locations
的getSpeed()
方法,通過LocationManager
報道返回的值是大量不可靠的。我正在使用LocationManager.GPS_PROVIDER
,過濾通過onLocationChanged
提供的位置以獲得最佳準確性。即使在一位數的精度水平上,返回的速度通常也很高。當手機處於靜止狀態時,我們正在談論高達200 mp/h(是的,我知道它以米/秒記錄)。
我在兩個不同型號的Android手機上測試相同的代碼庫,運行兩個不同的操作系統版本,並看到相同的問題,所以我期望這是一個代碼問題。
我錯過了什麼?我嘗試過在一段時間內平均地點,但無濟於事。我是否必須根據行駛距離/時間計算出我自己的速度值?這會令人失望。
正如你所看到的,我沒有做什麼特別的東西 - 對精度的過濾不大,甚至在此之後雙方AverageSpeed
和_bestLocation.getSpeed()
是定期unfeasibly高,即使在定位精度好。
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 2012-07-27 10:26:27
我應該指定,我得到非常可以接受的精確修正 - 通常是5 - 10米。地方是儘可能變化 - 從辦公室到客戶網站和家庭等 – 2012-07-27 10:30:34
@DanWray海,你有沒有解決這個問題,現在我正在努力相同,你能幫助我嗎? – 2014-08-04 09:35:16