簡體   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