在Interfacecontroller.swift
我有一个类变量var motionManager = CMMotionManager()
和var accTest = [Double]()
我在这段代码中引用:
let useOnlyAccelerometer = true
if useOnlyAccelerometer {
motionManager.accelerometerUpdateInterval = 0.1
if motionManager.accelerometerAvailable {
let handler:CMAccelerometerHandler = {(data: CMAccelerometerData?, error: NSError?) -> Void in
self.statusLabel.setText(String(format: "%.2f", data!.acceleration.x))
self.accTest.append(data!.acceleration.x)
}
motionManager.startAccelerometerUpdatesToQueue(NSOperationQueue.currentQueue()!, withHandler: handler)
}
} else {
motionManager.deviceMotionUpdateInterval = 0.1
if motionManager.deviceMotionAvailable {
let handler:CMDeviceMotionHandler = {(motion: CMDeviceMotion?, error: NSError?) -> Void in
self.statusLabel.setText(String(format: "%.2f", motion!.userAcceleration.x))
self.accTest.append(motion!.userAcceleration.x)
}
motionManager.startDeviceMotionUpdatesToQueue(NSOperationQueue.currentQueue()!, withHandler: handler)
}
}
直接使用加速度计工作。现在,如果我将useOnlyAccelerometer
更改为false
,那么它就无效了。我不明白差异或出了什么问题。在iPhone上它确实有效,根据文档,watchOS2应该支持CMDeviceMotion
。有什么想法吗?
答案 0 :(得分:0)
我猜想第一代Apple Watch不支持磁力计。 Ifixit发现手表上有磁铁将其连接到充电器。在2016年WWDC的实验室里,我问一位苹果工程师是否会得到磁力计的支持并得到一个相当清晰的答复:“这需要一个强大的磁力计,不是吗?”我不知道未来是否有支持的手段。
因此,如果不支持磁力计,则CMDeviceMotion的返回值为
public var magneticField: CMCalibratedMagneticField { get }
将是未定义的。建议提交错误报告。