我发现通过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 &