2014-02-13 30 views
14

我第一次开始思考我可以使用CoreLocation来跟踪速度以确定移动。这不起作用,因为我不想使电池干燥,而在较低的设置下,速度和位置读数远不准确。然后,我开始使用加速度计来跟踪这样的运动: http://blogs.oreilly.com/iphone/2008/06/iphone-as-pedometer.html用iOS加速度计确定重要运动的好方法是什么?

这种方法的效果令人惊讶,但效果并不如我所愿。当你拿着手机在行走时盯着它,会发生很大的问题。在这种情况下,上面的链接代码不起作用。如果它在你的口袋里或你的手臂上,这是一个很好的运动追踪器。

因此,尽管如此,有没有使用iOS加速度计(非M7)的伪计步器的任何技术都可以通过非数学工具来访问?

谢谢!

+0

只是想大声...加速度计测量加速度,右?所以它不能分辨用户是静止的还是以恒定的速度移动 –

+1

您能否描述重要运动的应用领域?目前还不清楚,为什么'CoreLocation'不符合要求。 – vokilam

+0

^second @vokilam – Morkrom

回答

0

那么,人们在走路时往往会保持电话不动。它不可能是完美的,没有计步器可以。当他们拿着设备时,你必须解决它不更新的问题,如果他们正在走路,他们不应该做太多的事情。您可以尝试找到平均速度,并且在唤醒锁关闭时(I.E他们正在查看屏幕),然后根据平均速度增加计数?

0

如果仅使用加速度计,则无法追踪移动距离,因为加速度计只能检测到加速度,这在人走路时不准确。也许你可以使用加速计作为步计数器,计算用户步行的步数,并使用低精度GPS(或短时高精度GPS)检测平均步距,结合这两个数据,可以大致测量用户在使用小电池时所行驶的距离。

当您检测到用户正在快速行驶时,他无法行走,那么您只能使用低精度GPS。

+0

“如果仅使用加速计,则无法追踪移动距离”并非完全正确。如果你知道用户的初始速度,然后继续检查用户的加速度,你可以通过近似“积分”从开始到当前时间的加速度来获得速度,然后再次进行积分以获得距离。它可能会导致电池电量耗尽和/或不能很好地工作。 – sudo

+0

@ 9000你的方法是对的,谢谢你提醒我。 – CarmeloS

0

我建议你观看2013年与CoreLocation相关的WWDC会话307。

https://developer.apple.com/wwdc/videos/

他们正在谈论的事情是通过使用递延更新类似于您的任务。

尤其是它们涵盖了低功耗状态。

简短的小结:

  • 设置活动类型CLActivityTypeFitness
  • 呼叫startUpdatingLocations
  • 使用- (void)allowDeferredLocationUpdatesUntilTraveled:(CLLocationDistance)distance timeout:(NSTimeInterval)timeout;方法来管理移动距离。据我了解,它只是在满足指定条件后才会唤醒手机,所以GPS芯片可以直接将收集到的位置传递给CoreLocation,它会通知您的应用程序有新的位置,您将使用一些计算来处理和分析它们,以显示用户旅行的距离,等等
0

当涉及到导航的目的时,单独使用加速度计仅允许进行有教育的猜测。

这是因为只有两种方式来解释加速度计数据,这两者是有缺陷的:

  • 惯性导航
  • 计步器

惯导将允许跟踪所有位置三个空间维度,但在今天的智能手机中使用的传感器不够准确 - 错误会在几秒钟后变得过大,从而使数据无用。

计步器,你正在寻找,只做一件事:计数步骤。结合步速,步数和步长可以对速度和距离做出假设。为了能够识别步骤并计算节奏,您将使用加速计来检测手机受到的影响,因为它位于跑步者口袋内。然而,将手机握在手中可防止检测到这些影响 - 因此计步器无法完成任何工作。

你可以做的最好的是提高整体的准确性,例如允许用户校准计步器。做到这一点的一种方法是让他以不同的速度走几次已知的距离并记录每次运行的经过时间和步数。这些测量将允许您计算步长,甚至可以针对不同的步速进行调整 - 以及其非常基本的数学计算。

相关问题