Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java GPS速度是错误的_Java_Android_Gps_Location - Fatal编程技术网

Java GPS速度是错误的

Java GPS速度是错误的,java,android,gps,location,Java,Android,Gps,Location,我在实际速度和GPS速度之间有很大差异(~20%)。但首先让我展示我的代码: private LocationManager locationMgr; private String locationProvider; 在位置侦听器中: @Override public void onLocationChanged(Location location) { // Get speed from location this.speed = location.getSpeed();

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

private LocationManager locationMgr;
private String locationProvider;

在位置侦听器中:

@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应用程序进行了测试,它显示了一个正确的值。我做错了什么?

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

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

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

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

3.6的系数表示360%,而不是20%,因此该答案不应是解决方案。如果输入和输出反向,则3.6的系数表示260%的故障。还不完全清楚ray的区别是什么意思。但是他显然想要以km/h为单位的速度(在他的代码中:Constants.KMPH)和getSpeed给你m/s。所以,如果它不是整个解决方案,它至少是它的一部分。我已经在doubleToStringParser方法中有了这个因子。很抱歉没有显示这些代码片段,所以这应该可以。3.6的因子表示360%,而不是20%,所以这个答案不应该是解决方案。3.6的因子表示260%的失败,如果您将输入和输出反转为~72%。还不完全清楚ray的区别是什么意思。但是他显然想要以km/h为单位的速度(在他的代码中:Constants.KMPH)和getSpeed给你m/s。所以,如果它不是整个解决方案,它至少是它的一部分。我已经在doubleToStringParser方法中有了这个因子。很抱歉,没有显示这些代码片段,所以这应该没问题。你可以发布错误的值与预期的正确值吗?你可以发布错误的值与预期的正确值吗?是的,我刚刚行驶到30公里/小时,所以gps速度不正确。但昨天我开了120,gps速度是112,我想这没问题。有人有办法控制较慢的速度吗?在我看来,我需要触发位置管理器以更频繁地获取位置。但是我怎么能做到呢?在120公里/小时的速度下,GPS的速度精确到0,1公里/小时。相信我。你的汽车转速表是一个可能会出错7%的装置。校准转速表(警察)的准确度为3%。一个好主意是查看导航设备。你们会发现你们总是在纳维1公里/小时以内。速度较慢:忽略它们,设计你们的应用程序,它不会评估较低的速度。或者试着平均过去5秒。是的,我知道,120公里/小时是由我的汽车显示的,112公里/小时是由我的应用程序显示的。所以没关系。对于较慢的速度,我将尝试使用最后3-5秒。非常感谢。是的,我刚开到30公里/小时,所以gps速度不正确。但昨天我开了120,gps速度是112,我想这没问题。有人有办法控制较慢的速度吗?在我看来,我需要触发位置管理器以更频繁地获取位置。但是我怎么能做到呢?在120公里/小时的速度下,GPS的速度精确到0,1公里/小时。相信我。你的汽车转速表是一个可能会出错7%的装置。校准转速表(警察)的准确度为3%。一个好主意是查看导航设备。你们会发现你们总是在纳维1公里/小时以内。速度较慢:忽略它们,设计你们的应用程序,它不会评估较低的速度。或者试着平均过去5秒。是的,我知道,120公里/小时是由我的汽车显示的,112公里/小时是由我的应用程序显示的。所以没关系。对于较慢的速度,我将尝试使用最后3-5秒。非常感谢你。
@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));
}