我试图编写一个简单的应用程序,这样我就可以使用CoreMotion API跟踪我在一定天数内的平均步行时间。 CMPedometer API可以访问上次会话的startDate和endDate。我认为这样做的一个简单方法就是保持一个' tally'用户默认值中的会话(即每次计步器跟踪您的步行时,计数增加1)并保持endDate - startDate时间差的总和。然后,我只是将总时间差异除以计数以获得平均步行时间。
我不知道我是怎么做到的。有没有办法在计步器跟踪行走时每次收集这些数据?
答案 0 :(得分:1)
CMPedometer API可以访问上次会话的startDate和endDate。
哪个API可以做到这一点? CMPedometer docs仅指定以下方法:
- queryPedometerDataFromDate:toDate:withHandler:
使用此方法检索指定日期之间的历史行人数据。此方法异步运行并将数据传递到您提供的块。只存储过去七天的数据并可供您检索。指定过去七天以上的开始日期仅返回可用数据。
我认为您正在寻找CMMotionActivityManager。根据文档,从CMMotionActivityManager获取活动非常简单:
- queryActivityStartingFromDate:toDate:toQueue:withHandler:
该查询将为您提供一组CMMotionActivity对象。过滤"行走=是"并且您已获得指定时间段内的步行会话列表(仅适用于过去7天)。
我不能说它有多准确,或者您是否需要进行一些自己的数据清理/过滤。