我希望能够在游戏过程中打开和关闭设备动态更新。但在我关闭然后再返回之后,CMMotionManager的.deviceMotion属性会在短时间内返回最后一次知道的deviceMotion(大约0.5秒,直到它可以计算新值,我猜)。
所以,我希望能够测试我得到的CMDeviceMotion对象的年龄,如果它们超过几秒钟就会忽略它们。
计算CACurrentMediaTime() - deviceMotion.timestamp似乎给了我准确的结果..但我担心这可能会在未来的设备或iOS版本中破坏。设备运动时间戳是否可以保证在未来与CACurrentMediaTime()保持可比性?有没有更好的方法来计算CMDeviceMotion时间戳的年龄?
来自Apple的文档:
通过调用mach_absolute_time()并将结果转换为秒来派生的CFTimeInterval。
时间戳是自手机启动以来的秒数。
答案 0 :(得分:1)
我遇到了同样的问题,需要保留事件的历史记录。我通过将updateInterval设置为非常低的值来解决这个问题,例如0.5。因此,Core Motion不需要重新初始化传感器,从而减慢能耗。