Android App getSpeed()在减速时不准确

时间:2013-06-05 14:11:13

标签: android gps

对不起,如果这被其他地方覆盖,但我无法专门找到这个问题。

我正在开发一款赛车应用程序,可以根据预设的目标速度告诉您前方或后方的秒数。

为了测试它,我们使用的车载计算机直接从车上读取速度(没有GPS)。我的应用似乎与车载电脑相匹配,直到汽车开始变慢,然后我的应用变得不稳定。

这是一个大约1:38出现问题的视频 http://www.youtube.com/watch?v=GhVM1VCqiA8

该应用程序有时候点亮的事实让我相信GPS覆盖率和计算时间的公式都很好。

显然存在准确性问题,尤其是当汽车减速时。

以下是我跟踪速度的一些代码。

LocationManager mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);

LocationListener mlocListener = new MyLocationListener();

mlocManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 0, 0, mlocListener);

public class MyLocationListener implements LocationListener

{

    @Override

    public void onLocationChanged(Location loc)

    {

        actualSpeedMps = (double)loc.getSpeed();

    }
////more

我在想GPS正在尝试更新太快,因此当汽车突然发生变化时,会给我不稳定的速度。

我的想法是将requestLocationUpdates最小时间参数(当前为0)更改为类似500.

我从一个基础教程中学习了这个课程,所以也许有人可以将我推荐给一个能让我提高速度的更准确的课程。

提前致谢

1 个答案:

答案 0 :(得分:0)

  

该应用程序有时候点亮的事实让我相信这个   GPS覆盖范围和计算时间的公式都很好。

通常,您的值是红色设备的值的两倍或三倍。 当你以30米/小时的速度行驶时。 GPS在中速和高速(如车辆)中超级精确

因此,当您获得GPS位置时,问题显然在您的算法和假设中。

  

我认为GPS正在尝试更新太快,因此   当汽车突然改变时,给我不稳定的速度。

肯定不会,它不会每秒更新超过一次。 你只有站着不动才会遇到GP问题,然后它通常不会报告0公里/小时,但这是另一个故事。

<强>结论:
GPS不是错误的来源,而是你的算法。

TIPPS:

  • 尝试使用模拟GPS编写单元测试来修复算法 输入
  • 不要假设您每秒都会收到一个位置,请使用时间戳计算时差
  • 将您的位置记录到文件中,如果您不相信速度值,请使用两个位置之间的距离除以它们之间的距离来计算它们,然后您会看到它们是正确的。
    并输入记录的位置到你的测试用例,并调试你得到负值的地方。
  • 尝试更准确地写下你想要达到的目标:你如何定义“我已经落后10个人”:例如“在以目标速度驱动的汽车后面。”
  • 想想你是否需要记录驱动的距离,然后你的应用程序可以使它比红色字母设备更好,它不能测量 距离那么好。