【问题标题】:GPS Speed is wrongGPS速度错误
【发布时间】:2014-09-17 12:55:36
【问题描述】:

实际速度和 GPS 速度之间存在很大差异 (~20%)。但首先让我展示一下我的代码:

private LocationManager locationMgr;
private String locationProvider;

...

// Location Manager for GPS
this.locationMgr = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
this.locationProvider = locationMgr.getBestProvider(criteria, false);
this.locationMgr.requestLocationUpdates(this.locationProvider, 0, 1.0f, this);

在位置监听器中:

@Override
public void onLocationChanged(Location location) {
    // Get speed from location
    this.speed = location.getSpeed();

    // Set speed TextView
    this.gpsVelo.setText(Helper.doubleToStringParser(this.speed, Constants.KMPH, null));
}

因此,我得到的速度与我的汽车显示的速度不同。我知道车速表是 +3-5%,但我有 20% 甚至更多。所以我用另一个 GPS 应用程序进行了测试,它显示了一个正确的值。我做错了什么?

【问题讨论】:

  • 你能发布错误的值和预期的正确值吗?

标签: java android gps location


【解决方案1】:

GPS 在速度值非常低时无法提供准确的速度。
在这种低速下,不同的算法(使用平均等)可能会报告不同的速度。 超过 10 - 20 公里/小时,它应该非常精确,最高可达 1%。 在汽车或火车上进行测试,当火车运行至少 50 公里/小时时,您应该为所有 GPS 设备获得相同的积分公里/小时值。

【讨论】:

  • 是的,我刚开到 30 公里/小时,所以 gps 速度不正确。但是昨天我开120,gps速度是112,我觉得还可以。任何人都有处理较慢速度的想法?在我看来,我需要触发位置管理器以更频繁地获取位置。但是我该怎么做呢?
  • 在 120 公里/小时 GPS 速度精确到 0.1 公里/小时。相信我。您的汽车转速表是可能出错约 7% 的设备。校准的转速计(警察)具有 3% 的准确度。证明的一个好主意是查看导航设备。你会发现你总是在导航的 1 公里/小时以内。
  • 较慢的速度:忽略它们,设计您的应用程序,使其不会评估较低的速度。或尝试平均最后 5 秒。
  • 是的,我知道,我的车显示了 120 公里/小时,我的应用程序显示了 112 公里/小时。所以没关系。对于较慢的速度,我将尝试使用最后 3 - 5 秒。非常感谢。
【解决方案2】:

location.getSpeed() 以 m/s 为单位返回速度。如果您需要以 km/h 为单位,则需要 double speed = location.getSpeed()*3.6;

【讨论】:

  • 3.6 的因子意味着 360% 而不是 20%,所以这个答案不应该是解决方案
  • 3.6 的系数意味着 260% 的失败,如果你的输入和输出反转是 ~72%。目前还不是很清楚,光线的不同之处是什么。但他显然想要以 km/h 为单位的速度(在他的代码中:Constants.KMPH)并且 getSpeed 给你 m/s。因此,如果它不是完整的解决方案,它至少是其中的一部分。
  • 我在 doubleToStringParser 方法中已经有了这个因素。很抱歉没有显示这些代码片段,所以应该没问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多