Android传感器(运动)

问题描述:

我正在构建这款适用于慢跑的android应用程序,该应用程序应该测量用户从起点开始的距离。Android传感器(运动)

我对使用GPS选项(经度,纬度)不感兴趣,所以如果没有GPS选项并仅使用安卓传感器,我如何计算设备作为时间函数的距离?

+3

我对Android没有太多了解,但是可以使用加速度计制作粗略的,不可靠的计步器,然后尝试使用从中收集的数据尝试超乎寻常的距离。或者,也许你可以用Wifi信号强度做一些事情(再次,粗略和不可靠)。这就是GPS首先被发明出来的原因......所以你为什么要那么做呢? – 2012-02-03 23:02:38

+0

,因为我不想强迫我的用户使用GPS。 – socksocket 2012-02-03 23:08:37

+2

然后不要。设置一个粗略的计步器。对于一些人来说(如果你做得很好,也许对大多数人来说)足够精确,但仍然会有用户有一个奇怪的步态或类似的东西,或者他们会因为你身高15英尺当估计他们的马拉松跑步距离。处理它们需要一定程度的精度...... GPS可能提供。我明白你来自哪里,但我警告你,如果你对任何精度感兴趣,你可能会感到失望。恨不得不把它打破给你。 – 2012-02-03 23:13:31

最好的办法是在你的应用中检测“摇晃”动作,然后用它来确定距离(即一次摇动等于一步,大约2000步是一英里)。当然,您可能需要对灵敏度进行微调,以确定需要多少动作才能算作一步。

还有这里检测抖动运动一个方便的教程:http://www.clingmarks.com/how-to-detect-shake-motion-on-android-phone/25

+0

感谢您的帮助,但您确定这是“我最好的选择”吗? 我正在寻找最佳实践解决方案。 – socksocket 2012-02-03 23:05:54

+0

那么,这种类型的应用程序的最佳做法是使用GPS,这就是为什么所有像Endomondo或RunKeeper这样的主要运行应用程序都是基于GPS的。如果您根本不想使用GPS,那么通过检测“摇晃”动作将手机当作计步器是您唯一可行的选择。 – 2012-02-03 23:11:24

+0

好的,感谢您的帮助! – socksocket 2012-02-03 23:13:17

什么你在这里谈论一些dead reckoning是,使用起始位置和已知的变化来估计当前位置,即。从理论上讲,如果你有一个准确的速度变化测量,你可以找出你最终的结果。有三个问题:

  1. 没有GPS,大多数智能手机都没有办法直接测量速度。相反,他们使用加速度计和陀螺仪来测量加速度和旋转,并且您必须基于这些来计算速度。

  2. 小的不准确性,特别是在测量期开始时,可​​能导致较大的错误。

  3. 跑步的本质涉及到跑步者上下跳动时出现很多微小的变化,这样就扭曲了,避免了障碍物等。所有这些变化的测量和计算都足够准确,以避免引入公平错误的数量将会很困难。

如果这是一个测量,编程,误差补偿等练习,那就去做吧。如果您想准确确定慢跑机的最终位置,请使用其他位置系统,如GPS。如果你只想估计旅行距离,我同意其他评论者试图衡量步数和乘以用户的步幅可能是你能做的最好的。