使用 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)
                }
            }
        }
    }

使用方法1打印数据导致错误

For-in 循环需要“CMSensorDataList?”符合“顺序”;你的意思是解开可选吗?

并使用方法2打印数据结果:

For-in 循环需要 'CMSensorDataList' 符合 'Sequence'

我在网上找到的示例当前不适用于最新的 swift 版本。我是 Swift 的新手,任何帮助将不胜感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)