繁体   English   中英

如何在WatchKit中使用CoreMotion?

[英]How to use CoreMotion in WatchKit?

我对这个问题的标题措词非常怀疑,但我认为这就是重点。

我一直在想刚才读的WatchKit的CoreMotion数据,但事实证明,我不能让startDeviceMotionUpdatesToQueue工作,我的处理程序不会被调用。

我尝试在自定义后台线程( NSOperationQueue() )中运行,但还是没有运气。

我在真正的Apple Watch上调试,而不是在模拟器上调试。

在我的WKInterfaceController

let manager = CMMotionManager()

override func awakeWithContext(context: AnyObject?) {
    super.awakeWithContext(context)
    let communicator = SessionDelegate()
    manager.deviceMotionUpdateInterval = 1 / 60
    manager.startDeviceMotionUpdatesToQueue(NSOperationQueue.mainQueue()) {
        (motionerOp: CMDeviceMotion?, errorOp: NSError?) -> Void in
        print("got into handler")
        guard let motion = motionerOp else {
            if let error = errorOp {
                print(error.localizedDescription)
            }
            assertionFailure()
            return
        }
        print("passed guard")
        let roll = motion.attitude.roll
        let pitch = motion.attitude.pitch
        let yaw = motion.attitude.yaw
        let attitudeToSend = ["roll": roll, "pitch": pitch, "yaw": yaw]
        communicator.send(attitudeToSend)
    }

    print("normal stack")
}

输出是

normal stack
normal stack

(是的,两次!我也不知道为什么会这样,但这不是重点,一定是我做错了另一件事)

我将其发布在这里,因为我不知道在哪里看,这简直太疯狂了。

startDeviceMotionUpdatesToQueue中尚不提供Device Motion( startDeviceMotionUpdatesToQueue )( deviceMotionAvailable返回false),加速计可能可以帮助您startAccelerometerUpdatesToQueue

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM