Я был довольно сомнительным в формулировке названия этого вопроса, но я думаю, что это все так, как есть.Как использовать CoreMotion в WatchKit?
Я пытался просто прочитать данные CoreMotion на WatchKit, но, как выясняется, я не могу заставить 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
(Да, два раза я не знаю, почему это тоже, но это не точка, должна быть еще одна вещь Я делаю неправильно)
Я отправляю это здесь, потому что у меня нет подсказки, где искать, это безумие.
Спасибо за головы! Итак, в WatchOS2 нет возможности читать гироскопические данные? –
Gyro также пока недоступен, просто акселерометр –
Даже с self.motionManager startAccelerometerUpdatesToQueue не работает. Однако isAccelerometerAvailable возвращает YES. –