watchOS2 CMDeviceMotion不起作用

时间:2016-01-08 16:52:18

标签: ios swift apple-watch watch-os-2

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。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我猜想第一代Apple Watch不支持磁力计。 Ifixit发现手表上有磁铁将其连接到充电器。在2016年WWDC的实验室里,我问一位苹果工程师是否会得到磁力计的支持并得到一个相当清晰的答复:“这需要一个强大的磁力计,不是吗?”我不知道未来是否有支持的手段。

因此,如果不支持磁力计,则CMDeviceMotion的返回值为

public var magneticField: CMCalibratedMagneticField { get }

将是未定义的。建议提交错误报告。