0

我正在构建一个 iOS 应用程序,我需要在其中保存用户执行的每个步骤的时间戳。我使用 CoreMotion CMPedometer,但 startUpdates 方法仅输出用户从开始时间到结束时间执行的总步数。

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

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

4

1 回答 1

1

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

假设我是一个非常缓慢的步行者。从上午 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分结束。

于 2021-03-09T16:29:54.333 回答