CMPedometer 保存步骤时间戳

问题描述

我正在构建一个 ios 应用程序,我需要通过它保存用户执行的每个步骤的时间戳。我使用的是 CoreMotion CMpedometer,但是 startUpdates 方法输出用户从开始时间到结束时间执行的总步数。

我使用的解决方法是:在返回步骤的每个块中,我使用 startDate 和 endDate,并计算每步的秒数,然后使用每步的秒数以线性方式设置每一步的时间戳。然后,我将下一个 startDate 设置为等于前一个块的 endDate。但这并不接近精确,因为在没有活动时不会返回任何块,从而导致错误的结果。

无论如何我可以得到确切的步骤时间吗?或者至少是更精确的方式

谢谢!!

解决方法

这听起来像是经典的“栅栏问题”

假设我是一个非常缓慢的步行者。从早上9点到10点我做4步,然后在10点到11点之间什么也不做,然后从11点到12点我再做4步

从 9 点到 10 点:

9       10
|1|2|3|4|

具有瞬时时间戳的步骤意味着什么?

第 1 步是从上午 9 点到 9:15,或者您可以说 9:07.5 是腿垂直时?或者我们是否对脚第一次接触地板的确切时间感兴趣,或者当腿垂直时您在迈步的平均点?或者我们说第 1 步是从 9:00 到 9:15,或者更一般地说,我在 1 小时内完成了 4 个步骤?这样做还有一个好处,即这些时间段是计算属性,而不是存储的日期,这些日期不会在“时间间隔中的 n 个步骤”表示中添加任何信息。

你为什么要将下一个 startDate 设置为前一个块的 endDate - 人们并不总是在做步骤......我没有在上午 10 点从 11 点到 12 点开始我的第一步,我是在上午 11 点开始的,11点15分结束。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...