使用watchOS 5无法获得Core Motion更新:“ [陀螺仪]手动将陀螺仪中断校准设置为800”

时间:2019-02-18 13:53:33

标签: gyroscope core-motion watch-os-5

我正在尝试从Apple Watch 3(WatchOS 5.1)获取Core Motion数据,但是尽管DeviceMotion可用(\^PO([a-zA-Z0-9]{6,11})(T+)(T?)$\ 属性为isDeviceMotionAvailable),但从未触发过该处理程序。解析true之后,我立即在控制台中收到以下消息:

  

[陀螺仪]手动将陀螺仪中断校准设置为800

我正在使用以下功能来获取Device Motion更新:

super.willActivate()

我已经在InterfaceController中声明了

func startQueuedUpdates() {
    if motion.isDeviceMotionAvailable {
        self.motion.deviceMotionUpdateInterval = 1.0 / 100.0
        self.motion.showsDeviceMovementDisplay = true
        self.motion.startDeviceMotionUpdates(using: .xMagneticNorthZVertical, to: self.queue, withHandler:{
            (data, error) in
            // Make sure the data is valid before accessing it.
            if let validData = data {

                print(String(validData.userAcceleration.x))

            }
        })
    }
}

任何人以前都遇到过此消息并设法解决了吗?

注意:我已经检查了let motion = CMMotionManager() let queue : OperationQueue = OperationQueue.main 属性,它是isGyroAvailable

1 个答案:

答案 0 :(得分:0)

这里的技巧是使startDeviceMotionUpdates(using: CMAttitudeReferenceFrame参数与设备的功能匹配。如果没有磁力计,它就不会与磁北有关,即使有磁力计,也不会与真北有关,除非它知道您的位置(即纬度和经度)。如果它没有能力符合您选择的参数,则将调用更新,但数据将为nil

如果您以最小的.xArbitraryZVertical开始,您将 从加速度计获得更新,但是通过{{ 1}}属性...

CMDeviceMotion.attitude