2016-02-22 3 views
0

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.

Répondre

0

mouvement de l'appareil (startDeviceMotionUpdatesToQueue) n'est pas disponible en WatchOS2 encore (deviceMotionAvailable renvoie false), probablement accéléromètre peut vous aider à startAccelerometerUpdatesToQueue

+0

Merci pour le heads up! Donc, il n'y a aucun moyen de lire les données gyroscopiques dans WatchOS2? –

+0

Gyro n'est pas encore disponible, seulement accéléromètre –

+0

Même avec self.motionManager startAccelerometerUpdatesToQueue ne fonctionne pas. Toutefois, isAccelerometerAvailable renvoie YES. –