【问题标题】:Android sensors (motion)Android 传感器(运动)
【发布时间】:2012-02-03 22:58:50
【问题描述】:

我正在构建这个用于慢跑的 android 应用程序,它应该测量用户与起点的距离。

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

【问题讨论】:

  • 我对 Android 了解不多,但您可以使用加速度计制作一个粗略的、不可靠的计步器,然后尝试使用从中收集的数据来猜测距离。或者,也许您可​​以对 Wifi 信号强度做一些事情(同样,粗略且不可靠)。这几乎就是 GPS 最初被发明的原因……那你为什么要与它作斗争呢?
  • 因为我不想强迫我的用户使用 GPS。
  • 那就不要了。设置一个粗略的计步器。这对某些人来说已经足够精确了(如果你做得好,也许对大多数人来说),但仍然会有一些用户有奇怪的步态或类似的东西,或者他们会因为你离开 15 英尺而感到厌烦在估算他们的马拉松跑步距离时。与它们打交道将需要一定程度的精度……这可能是 GPS 提供的。我知道您来自哪里,但我警告您,如果您对任何级别的精度感兴趣,您可能会感到失望。讨厌不得不打破它给你。

标签: java android navigation android-sensors


【解决方案1】:

您在这里所说的本质上是dead reckoning,即使用起始位置和已知变化来估计当前位置。从理论上讲,如果您对速度变化有准确的测量结果,您就可以找出最终的结果。存在三个问题:

  1. 如果没有 GPS,大多数智能手机都无法直接测量速度。相反,他们使用加速度计和陀螺仪来测量加速度和旋转,你必须根据这些来计算速度。

  2. 微小的误差,尤其是在测量周期开始时,可​​能会导致大的误差。

  3. 慢跑本质上涉及速度的许多微小变化,因为跑步者上下弹跳、左右扭转、避开障碍物等。准确地测量和计算所有这些变化以避免引入相当多的错误将是困难的。

如果这是测量、编程、误差补偿等方面的练习,那就去做吧。如果您想准确确定慢跑者的最终位置,请使用其他定位系统,例如 GPS。如果您只想估计行进的距离,我同意其他评论者的观点,即尝试测量步数并乘以用户的步幅可能是您能做的最好的事情。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 感谢您的帮助,但您确定这是“我的最佳选择”吗?我在这里寻找最佳实践解决方案。
    • 嗯,这类应用程序的最佳实践是使用 GPS,这就是为什么所有主要的运行应用程序(如 Endomondo 或 RunKeeper)都是基于 GPS 的。如果您根本不想使用 GPS,那么通过检测“摇晃”动作将手机视为计步器确实是您唯一可行的选择。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多