J'étais assez douteuse sur le libellé du titre de cette question, mais je pense que c'est tout ce que je veux dire.Comment utiliser CoreMotion dans WatchKit?
J'ai essayé juste de lire les données de CoreMotion sur le WatchKit, mais comme il s'avère, je ne peux pas obtenir startDeviceMotionUpdatesToQueue
pour fonctionner, mon gestionnaire n'est jamais appelé.
J'ai essayé d'exécuter dans un fil d'arrière-plan personnalisé (NSOperationQueue()
), toujours pas de chance. Je débogue sur un vrai Apple Watch, pas sur le simulateur.
Dans mon 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")
}
la sortie est
normal stack
normal stack
(Oui, deux fois, je ne sais pas pourquoi cela non plus, mais ce n'est pas le point, doit être autre chose Je fais à tort)
Je poste ceci ici parce que je n'ai aucune idée de où se pencher, c'est fou fou.
Merci pour le heads up! Donc, il n'y a aucun moyen de lire les données gyroscopiques dans WatchOS2? –
Gyro n'est pas encore disponible, seulement accéléromètre –
Même avec self.motionManager startAccelerometerUpdatesToQueue ne fonctionne pas. Toutefois, isAccelerometerAvailable renvoie YES. –