检查设备是否真的在移动



我正在处理一个需要获得汽车速度的应用程序。为了达到速度,我知道我可以使用诸如 double speed = locationb.getspeed()之类的东西;`但是,当我进行测试时,当我坐在笔记本电脑后面时,速度在0.0至40 km/h之间变化。在汽车中,速度实际上接近汽车速度,因此这不是问题。

检查设备是否真正移动的最佳方法是什么?我已经试图获得locationAlocationB之间的距离,并在获得两个位置的时间以获取速度。

double distance = locationA.distanceTo(locationB);
double speed = (distance / time) * 3600 / 1000;

但是,这似乎根本不稳定,例如getSpeed()方法。

有没有办法仅在设备移动时显示速度?它会可靠吗?

任何帮助都将受到赞赏,

谢谢。

检查 Location的horicontal精度属性。
如果不到30m,则可以忽略该位置。

如果您坐在笔记本电脑上并获得速度= 40 km/h(我从未在GPS设备中看到的),请看看HOR。精度是。它可能超过30m。

在基于GPS的系统中,切勿按时间变化计算速度,只需使用location.getSpeed()即可。原因是GPS芯片内部通过物理多普勒效应而不是通过位置变化来计算速度。静止不动,或者在非常低的速度下,这不能很好地工作,因此您必须过滤出非常低的速度和不良的GPS信号。(通过Horicontal精度估算)

我认为您应该将A和B之间的距离限制为最小长度。小距离将在您的速度计算中引入更多错误。

Boolean moving - false;
double distance = locationA.distanceTo(locationB);
double speed = (distance / time) * 3600 / 1000;
if (distance > SOME_THRESHOLD) {
   moving = true
}

相关内容

最新更新