我正在编写代码以通过 CMMotionManager() 访问运动数据。我可以正确获得加速度、用户加速度、重力、姿态和旋转率。现在我想添加磁力计读数功能。按照现有代码,该部分看起来像
import CoreMotion
...
let motionManager = CMMotionManager()
...
motionManager.deviceMotionUpdateInterval = 1/10 //in s
motionManager.accelerometerUpdateInterval = 1/128 //in s
motionManager.magnetometerUpdateInterval = 1/100 // in s
...
if motionManager.isMagnetometerAvailable {
let handler:CMMagnetometerHandler = {(magnetoData:CMMagnetometerData?, error: Error?) -> Void in
self.read1.setText(String(format: "%.2f", magnetoData!.magneticField.x))
self.read2.setText(String(format: "%.2f", magnetoData!.magneticField.y))
self.read3.setText(String(format: "%.2f", magnetoData!.magneticField.z))
}
motionManager.startMagnetometerUpdates(to: OperationQueue.main, withHandler: handler)
}
其他传感器数据(加速度、用户加速度、重力、姿态和旋转速率)的类似代码运行良好。但是,上面的代码在“motionManager.isMagnetometerAvailable”处停止,因为它总是返回 false 以跳过以下代码。
我测试的设备是 iPhone 11 Pro / Apple Watch Series 6。
谢谢你。