这是在android中计算速度的最佳方法是“使用GPS坐标手动计算”还是“location.getSpeed”?

我想在Android设备计算速度,但是这是最好的做法,它已经有location.getSpeed()函数使用GPS,这是最好的方式来使用? 或者我应该使用获得的GPS坐标来手动计算速度?

Solutions Collecting From Web of "这是在android中计算速度的最佳方法是“使用GPS坐标手动计算”还是“location.getSpeed”?"

似乎getSpeed()方法并不总是可靠的,特别是在低速和GPS覆盖不是最优时。 你可以看看这个问题 , 这两个都是关于getSpeed()的替代方法。 然而, android开发者页面表示,使用Google Location API可以获得更好的性能。

所以看起来,select取决于您的应用程序的使用情况:如果您的目标是缓慢的位移与gps覆盖率较差的区域(走在木材),使用自己的实施。 具有良好GPS覆盖范围的快速区域,请使用Google Location API。

希望它帮助你。

国际海事组织(IMO)最新的Android方法是使用Location.getSpeed()以及Google服务位置API和融合位置提供程序。 然后,根据Google Play服务活动识别来检查此值。

融合的位置提供商集成了一些其他车载传感器来调整位置数据,这比单独的GPS更好。 然后,检查ActivityRecognition.getMostProbableActivity()方法。 如果DetectedActivitySTILLtypes,那么你的真实速度可能等于0.如果它的ON_FOOT ,它可能是一个低速(例如,1米/秒)。 如果它的ON_BICYCLEIN_VEHICLE ,你可能很好地依靠从Location.getSpeed()直接获得的速度输出。 您还需要检查DetectedActivity.getConfidence()值,并根据这些值设置您自己的信心水平阈值,以提供“信心”:)。

我也肯定地build议你不要简单地平均顺序位置来获得两个位置之间的平均速度(如果你这样做的话,它必须是大量位置的平均速度)。 在我的移动设备基准testing中(详见本文第105-106页和第137-138页),我发现GPS子系统计算的瞬时速度(通常基于GPS载波信号的多普勒频移 )比从GPS获得的位置要精确得多。 在testing的Sanyo Pro 200 I上,静止室内(仅使用辅助GPS,无传感器融合)观察到的速度的第95百分位是1 m / s。 我能够使用速度数据(参见第137-138页)在我正在评估的一些智能能源pipe理技术中筛选出大量位置exception值。 通过传感器融合和活动识别来帮助过滤exception值,在类似设备上的准确度应该比这更好。

最后,我不能强调这一点,你是否拥有真正的设备上的testing,尽可能多的拖延,最好是最stream行的模式。 Android有很多OEM厂商推出设备,都会有自己的偏见。 最好的办法是创build一个针对最受欢迎的模型的解决scheme,承认获得解决scheme在所有模型上完美运行是不现实的。

移动速度快于行走速度的设备的最佳方式是直接使用location.getSpeed()。

对于行人或其他低速情况,这并不容易,也许现在有一个有效的低速是不可能的。
有些尝试评估历史logging,并进行平均或基于阈值的方法,这将改善特定的应用程序/使用情况。

但最简单的是devise你的应用程序忽略低速。

一些与速度相关的链接:
GPS位置校正
平滑的GPS数据