Android的GPS定位速度不可靠(Android GPS Location Speed Unre

2019-07-30 15:32发布

写一个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;
        }
}

Answer 1:

我现在已经在GPS硬件工作超过7年。 精度读数也并非100%准确。 制造商用于测量它的系统沿国准确性。 CEP,RMS,2DRMS,和R95是一些系统。 阅读这篇文章,以了解更多信息: http://en.wikipedia.org/wiki/Circular_error_probable

精度数字不包括异常值。 举例来说,如果说准确性5米然后在良好信号条件下获得的读数将有5米,95%的时间最大误差。 没有什么可以对剩余的5%的读数可说的。 防止这些异常是特制的酱汁,使一个很好的基于位置的应用从脱颖而出。

有些事情你可以做的是:

  1. 过滤掉疯狂的高速度。 利用海拔高度为暗示了在飞机之中。
  2. 来自运动传感器相关信息,看看他们是否有GPS同意。 运动传感器签名将在稳定状态下和在运动非常不同。
  3. 一个GSM / 3G小区的典型尺寸是在市区一公里,人口稀少地区5-10公里以下。 如果车辆在高速行驶一段时间,小区发射塔信息仍然是一样的,你知道什么是错的。
  4. 请问GPS定位读北部一个时刻和南部的未来太高速? 如果是的话,它很可能是GPS误差。
  5. 检查GPS caluclation使用卫星的数量。 图12是优秀的,9是健康的,5个或更少差,图4是用于纬度,经度+高度计算最低限度,图3是用于纬度,经度计算最低限度。 点儿小于3不是有效的阅读。 你可以更自信数据的有效性,如果staellites的数量很大。


Answer 2:

GPS设备的位置的里程计,基于所述接收器已经多远自从上次测量移动。 它的速度计算不受误差的相同源作为车辆的速度计(车轮大小,传输/传动比)。 相反,GPS的位置精度,因此,其计算出的速度的准确度,取决于当时的卫星信号质量。 速度计算将在更高的速度更准确的,当位置误差到位置变化的比率较低。

维基百科。

也许,你有很好的信号强度,你应该试试这个到位。



Answer 3:

我遇到了同样的问题。 我认为GPS信号取决于位置,某个位置可能会位置的精确输出,否则一个“不那么可靠”的结果。 就我而言,我位于离我的实际位置约200米。 你呢?

要添加,GPS_PROVIDER不会在这里我区工作。 NETWORK_PROVIDER做,并且它是给予200米结果之一。



Answer 4:

它seemes,大多数人都假设从GPS这样的速度信息是以比较与时间相关性差异的位置。 这种方法是不是确定速度非常好,而且是在行程的较低速度差。

GPS接收器可以输出速度测量基于从sattelite测量多普勒频移。 基于多普勒速度测量精度要好得多比较基于位置/时间计算速度测量。

谷歌在GPS速度多普勒,你会发现很多阅读。

其中一个环节是在这里: http://nujournal.net/HighAccuracySpeed.pdf

/城市Holmdahl



Answer 5:

如果GPS失败..现在HTML5提供地理位置API http://diveintohtml5.info/geolocation.html



文章来源: Android GPS Location Speed Unreliable