写一个GPS记录应用程序〜
我发现在返回的值getSpeed()
方法的Locations
所报告LocationManager
是大量不可靠的。 我使用LocationManager.GPS_PROVIDER
,过滤通过提供的位置onLocationChanged
最佳精度。 即使在个位数的精度水平恢复速度一般是高的离谱。 我们谈论最多200 MP /小时(是的,我知道这是记录在米/秒),当手机处于静止状态。
我测试相同的代码基础上的两个不同型号的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;
}
}