计算CMMotionActivity间隔

时间:2014-01-19 10:07:24

标签: ios objective-c core-motion

我正在尝试计算给定CMMotionActivity的时间间隔 CMMotionActivityCMLogItem子类,因此具有属性:@property(readonly, nonatomic) NSTimeInterval timestamp
此时间戳定义为:

  

时间戳是自手机以来的秒数   引导。

CMMotionActivity也有属性@property(readonly, nonatomic) NSDate *startDate 我想弄清楚给定活动的间隔是多少,目的是想出用户跑步或走路的时间。
我正在使用历史数据(不是实时阅读事件) 我尝试计算运动事件之间的差异,但这似乎是错误的,因为我以5秒的间隔获得事件但有时间隔更大。
有没有办法计算给定CMMotionActivity的“endDate”?
通过观察单个事件或一系列事件,我似乎无法通过可靠的方法找到方法。

2 个答案:

答案 0 :(得分:2)

我相信每次动作状态发生变化时都会生成CMMotionActivity。假设这样,给定两个CMMMotionActivity对象,您可以计算两个事件之间的持续时间,从而确定静止/行走/跑步/驾驶/未知的活动有多长。

答案 1 :(得分:0)

至少从 iOS 14 开始,每个 CMMotionActivity 似乎都涵盖以下一个 CMMotionActivity 记录的 .startDate 结束的时间段。

有时,下一条记录将是具有指定活动分类的另一条记录。在其他时候,特别是如果分类器无法决定下一个活动是什么但知道前一个活动已经结束,那么它将是一个没有设置任何仅用于结束前一个记录的活动位的记录。

例如,下面记录#1的静止期以未分类记录#2结束,而记录#3的步行期以记录#4的静止期开始结束:

CMMotionActivity <startDate,2021-02-22 12:01:22 +0000,confidence,2,unknown,0,stationary,1,walking,0,running,0,automotive,0,cycling,0>
CMMotionActivity <startDate,2021-02-22 12:51:17 +0000,confidence,2,unknown,0,stationary,0,walking,0,running,0,automotive,0,cycling,0>
CMMotionActivity <startDate,2021-02-22 12:51:24 +0000,confidence,2,unknown,0,stationary,0,walking,1,running,0,automotive,0,cycling,0>
CMMotionActivity <startDate,2021-02-22 12:52:08 +0000,confidence,2,unknown,0,stationary,1,walking,0,running,0,automotive,0,cycling,0>