如何在Android中行走时计算距离?

rah*_*hul 21 android distance calculator

我正在为我的应用程序开发一个演示,其中有两个按钮,分别命名为"START"和"STOP".当用户点击"开始"时,他将开始行走.我想要做的是,当用户点击"STOP"时,演示将计算他在"START"和"STOP"之间的距离.如果用户按下"START"并按下"STOP"而不执行任何步骤,则必须显示0km或0m.我不知道如何开始这个; 请提出建议.

San*_*rsh 20

有不同的方法来做到这一点:

  1. GPS:每隔X秒(比如10秒)继续增加2点之间的GPS距离.检查Android Location.distanceTo或distanceBetween.检查我的跟踪应用程序,它是开源的.GPS在室内不可用,如果用户频繁改变方向则会出错(每1-2秒读取一次)
  2. Accelerometer:使用加速度计查找用于步进检测的代码/库.距离来自加速度的双重整合,错误可以在这里非常快速地加起来.
  3. 步进探测器:内置于Nexus 5中.谷歌必须尽可能地处理加速度计误差.这是基于硬件的计算,消耗更少的电池但是截至日期大多数手机都没有.

您还可以查看Pedestrian dead reckoning


Nav*_*ngh 13

一种方法是使用加速度计数据.用户按下"开始"按钮后,您的应用应连续记录加速计数据.每当用户迈出一步时,您将在数据中观察到峰值.对此数据应用过滤器,您应能够以合理的准确度检测所采取的步骤数.将其乘以步长,您应该得到行进距离的近似值.将用户的高度作为输入参数.步长约为0.45*一个人的身高.由于这种方法独立于GPS,因此它也适用于室内.编辑:您需要使用所有三个轴的加速度计值使其完全独立于设备方向.您可以使用x ^ 2 + y ^ 2 + z ^ 2

  • @jnovacho它不是关于你在某个特定方向的行进速度.当您迈出一步时,手机中的手机加速度会发生突然变化(主要是Z轴,但也有X轴和Y轴).它不是因为你的行走速度,而是因为你向前迈了一步,这是一个突然的动作. (6认同)
  • 此解决方案存在一个问题。如果您以恒定速度行驶,则加速度为 0,因此加速度计不会读取任何读数。 (2认同)

sky*_*der 6

在您的应用中询问GPS权限.点击开始时,记录GPS坐标.做同样的停止.你现在有两个坐标.然后,您可以应用距离公式来获得行进的总距离.

编辑:

至于评论中澄清的情况,我认为你需要研究的是Android的运动传感器.您可能需要做出很多假设,或者要求用户在实际使用前校准您的应用.

假设您了解用户的节奏因素.使用运动传感器,计算用户"走路"的时间长度(显然,没有简单的方法来确定您的用户是实际走路还是只是摇动手机).将其与您的用户的节奏因子相乘,您就可以非常粗略地了解用户完成了多少步行.

  • 谢谢skytreader,我想做同样的事情,但问题是,如果我从A点开始并在步行3公里后结束A点,那么我的开始和结束坐标将是相同的,它将返回我0km应用距离公式 (4认同)