使用iOS加速度计确定显着移动的好方法是什么?

时间:2014-02-13 02:17:54

标签: ios ios7 core-location accelerometer

我首先开始考虑使用CoreLocation来跟踪速度以确定移动。这不起作用,因为我不想让电池干电,而在较低的设置下,速度和位置读数远非准确。然后我继续使用加速度计跟踪这样的运动: http://blogs.oreilly.com/iphone/2008/06/iphone-as-pedometer.html

这种效果出奇的好,但它并不像我想的那么好。当你走路时拿着手机盯着它时,会出现一个大问题。在这种情况下,上述链接代码不起作用。如果它在你的口袋或手臂上,那么它就是一个很好的运动追踪器。

所以,尽管如此,有没有任何技术可以使用iOS加速度计(而不是M7)进行伪计步器,非数学巫师可以使用它?

6 个答案:

答案 0 :(得分:0)

嗯,人们在走路时往往会保持手机不动。它不可能是完美的,没有计步器可以。当他们拿着设备时,你必须满足它不更新,如果他们走路,他们不应该做很多事情。您可以尝试找到平均速度,同时唤醒锁定关闭(I.E他们正在看屏幕)然后根据平均速度增加计数?

答案 1 :(得分:0)

如果仅使用加速度计,则无法跟踪移动距离,因为加速度计只能检测到加速度,当人员行走时这种加速度无法准确。

也许你可以使用加速计作为计步器,计算用户走的步数,并使用低精度GPS(或短时间高精度GPS)来检测平均步距,结合这两个数据,你可以大致测量使用少量电池时用户行走的距离。

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

答案 2 :(得分:0)

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

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

他们通过使用默认更新来讨论与您的任务类似的事情。

特别是它们涵盖了低功耗状态。

简短概述:

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

答案 3 :(得分:0)

当谈到导航的目的时,单独使用加速度计只能进行有根据的猜测。

那是因为只有两种方法来解释加速度计数据,这两种方法都存在缺陷:

  • 惯性导航
  • 计步器

惯性导航可以跟踪所有三个空间维度中的位置,但今天智能手机中使用的传感器不够准确 - 几秒钟后误差就会变得太大,使数据变得无用。

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

您可以做的最好的事情是提高整体准确度,例如允许用户校准计步器。一种方法是让他以不同的速度多次走一段已知距离并记录每次跑步的经过时间和步数。通过这些测量,您可以计算步长,甚至可以根据不同的速度进行调整 - 这只是非常基本的数学运算。

答案 4 :(得分:0)

参考CMMotionManager,它提供了在设备加速时获取X,Y和Z坐标的方法:

https://developer.apple.com/library/ios/documentation/coremotion/reference/cmmotionmanager_class/Reference/Reference.html

答案 5 :(得分:0)

您链接到的文章在该URL上不再可用,因此我可能不清楚我到底想做什么。但是,如果您正在寻找计步器会使用的步数,则应考虑为此使用iOS更高级别的API。

(自iOS 8起)当前有CMPedometer类作为Core Motion的一部分。根据版本的不同,可用数据不仅是步数计数,还包括距离,步速和节奏。例如,从iOS 9开始可以使用节奏,而从iOS 10开始可以使用事件更新功能。

与大多数Core Motion类一样,您可以使用处理程序调用startEventUpdates,并且在处理程序发生数据时定期对其进行更新。您还可以将startUpdates与开始日期一起使用,并查看过去的累积数据。