如何在几秒钟内确定CMDeviceMotion的年龄

时间:2013-04-05 15:16:56

标签: ios accelerometer core-motion cmmotionmanager

我希望能够在游戏过程中打开和关闭设备动态更新。但在我关闭然后再返回之后,CMMotionManager的.deviceMotion属性会在短时间内返回最后一次知道的deviceMotion(大约0.5秒,直到它可以计算新值,我猜)。

所以,我希望能够测试我得到的CMDeviceMotion对象的年龄,如果它们超过几秒钟就会忽略它们。

计算CACurrentMediaTime() - deviceMotion.timestamp似乎给了我准确的结果..但我担心这可能会在未来的设备或iOS版本中破坏。设备运动时间戳是否可以保证在未来与CACurrentMediaTime()保持可比性?有没有更好的方法来计算CMDeviceMotion时间戳的年龄?

来自Apple的文档:

CACurrentMediaTime()

  

通过调用mach_absolute_time()并将结果转换为秒来派生的CFTimeInterval。

deviceMotion.timestamp

  

时间戳是自手机启动以来的秒数。

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,需要保留事件的历史记录。我通过将updateInterval设置为非常低的值来解决这个问题,例如0.5。因此,Core Motion不需要重新初始化传感器,从而减慢能耗。