iOS CMStepCounter& CMMotionActivityManager

时间:2014-01-16 15:57:51

标签: ios core-motion cmmotionmanager apple-m7

我正在使用CMStepCounterCMMotionActivityManager

我想做的是全天计算出我的总步行时间,从而得出我的平均速度。

然而,查看CMMotionActivityManager中的数据,很明显,在“未知活动”且没有行走或跑步的时段内,实际记录了全天的一些步骤。这确实很有意义,因为你需要为iOS做一些步骤才能知道你正在走路。但是,这些都会在任何一天的过程中累积起来。

查询CMMotionActivity,可以获取每个事件的时间戳。但是,虽然我很清楚每个步骤都必须在CMStepCounter中加上时间戳,但我只能看到一种方法来返回两个时间点之间的总步数。如果我能用时间戳返回每个步骤的数组,那将是多么伟大的事情,如果是这样,怎么样?

非常感谢。

1 个答案:

答案 0 :(得分:1)

使用当前的Core Motion API,您无法直接获得包含其时间戳的每个步骤的数组。

但您可以使用queryActivityStartingFromDate:toDate:toQueue:withHandler:来获取CMMotionActivity个对象的数组。然后使用时间戳通过调用queryStepCountStartingFrom:to:toQueue:withHandler:来计算步数。

我不认为M7处理器存储每个步骤都有自己的时间戳。如果您将1作为stepCounts传递给方法startStepCountingUpdatesToQueue:updateOn:withHandler:,您会注意到每个步骤都没有执行处理程序。就像文档说的那样:每次超过步数阈值时,都会尽力执行处理程序块。