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

问题描述 投票:14回答:6

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

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

所以,尽管如此,有没有任何技术可以使用iOS加速度计(非M7)伪计步器,非数学智能可以访问?

ios ios7 core-location accelerometer
6个回答
0
投票

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


0
投票

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

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

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


0
投票

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

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

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

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

简短概述:

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

0
投票

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

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

  • 惯性导航
  • 计步器

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

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

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


0
投票

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

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


0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.