ios - 使用 Swift 从记录器中读取加速度计数据
问题描述
当应用程序进入后台时,我试图在苹果应用程序的后台运行加速度计,并且我打算使用 CMSensorRecorder 记录数据。在尝试迭代结果并打印每一行时,我无法访问数据并不断出错。下面是我使用的代码。
func runBackgroundAccelerometer() {
let recorder = CMSensorRecorder()
// record data in background
if CMSensorRecorder.isAccelerometerRecordingAvailable() {
print("Accelerometer available")
self.lastRecorderAccess = Date()
recorder.recordAccelerometer(forDuration: 5 * 60) // Record for 5 minutes
}
// METHOD 1
// let list = recorder.accelerometerData(from: Date(timeIntervalSinceNow: -60), to: Date())
// for row in list {
// print(row)
// }
// METHOD 2
if let list = recorder.accelerometerData(from: Date(timeIntervalSinceNow: -60), to: Date()) {
for data in list{
if let accData = data as? CMRecordedAccelerometerData{
let accX = accData.acceleration.x
let timestamp = accData.startDate
print(accX)
print(timestamp)
}
}
}
}
使用方法一打印数据会报错:
For-in 循环需要“CMSensorDataList?” 符合“顺序”;你的意思是解开可选的吗?
并使用方法 2 打印数据结果:
For-in 循环要求 'CMSensorDataList' 符合 'Sequence'
我在网上找到的示例目前不适用于最新的 swift 版本。我是 Swift 的新手,任何帮助都将不胜感激。
解决方案
推荐阅读
- android - 删除任务时如何停止前台服务?
- flutter - 如果添加到动画列表,Flutter 查找已停用小部件的祖先是不安全的
- python - 为什么我的 for 循环在 django 视图中不起作用
- xamarin - Xamarin 表单,框架内的按钮未触发事件
- python - 如何在python中添加随机尖峰信号
- node.js - Node.js 将错误与“未处理的拒绝验证异常:...”
- azure - Azure 虚拟机麦克风和扬声器
- css - “显示”属性是否继承?
- excel - 将多个工作簿的 Sheet1 复制到一个新工作簿
- google-cloud-platform - GKE 是否支持容器检查点