我开发了一个iOS应用程序,可以从手机的加速度计和陀螺仪收集数据,它应该处理一些数据并将其发送到云端。
问题在于,例如CMAccelerometerData基于CMLogItem,它将时间戳存储为"自手机启动以来的时间量(以秒为单位"(苹果文档(。
为了找到纪元(自 1970 年 1 月 1 日以来的秒数(的实时时间,我尝试使用 NSProcessInfo((.systemUptime,但事实证明这个值在某些情况下并不准确,并给了我长达几个小时的偏移量!
在一些帖子中提到正常运行时间参数受系统睡眠的影响,这可能是这些偏移的问题(我必须提到,在调试时根本没有偏移(。
知道我如何获取CMLogItem的时间戳吗?(即使获得"足够接近"的时间戳也足够了,我可以跳过毫秒精度......
提前感谢!
如果我正确理解了你的问题,CMAccelerometerData
和CMLogItem
不是你需要处理的类型。
CMSensorRecorder.accelerometerData(from:to:)
返回 CMSensorDataList
,这允许迭代CMRecordedAccelerometerData
对象,每个对象都有startDate: Date
参数。
此外,以下扩展将使样本迭代更容易:
extension CMSensorDataList: Sequence {
public func makeIterator() -> NSFastEnumerationIterator {
return NSFastEnumerationIterator(self)
}
}