2014-11-18 14 views

risposta

9

No. L'accesso diretto ai sensori Apple Watch (che includono l'accelerometro) non è possibile.

Come sempre, se questo è qualcosa che desideri, si prega di presentare una richiesta al numero https://bugreport.apple.com.

+6

Questo è scaduto ora, vedere altre risposte di Casillas per l'aggiornamento di WatchOS 2 – woody121

2

Lo faremo molto probabilmente l'anno prossimo, quando Apple ci permetterà di creare applicazioni complete. Fino ad ora è solo l'interfaccia utente, le occhiate e le notifiche.

Aggiornamento: Apple ha fornito API per sviluppatori ora. Controlla la risposta di Casillas.

+2

è disponibile ora, e ho condiviso il codice e le risorse di seguito. – casillas

25

Le informazioni sui dati del sensore sono ora disponibili in Watchkit for watchOS 2.0.

Si potrebbe verificare queste informazioni nel seguente sessione che è totale 30 minuti presentation.If non si vuole guardare intera sessione, poi si salta direttamente alle caratteristiche CoreMotion e HealthKit che è tra 22-28 min:

WatchKit for watchOS 2.0 Session in WWDC 2015

frequenza cardiaca Attuazione

https://developer.apple.com/documentation/healthkit/hkworkout

Accelerometro Attuazione

Ecco l'implementazione di accelerometro in WatchKit Extension, Ecco l'aggiornamento reference:

import WatchKit 
import Foundation 
import CoreMotion 

class InterfaceController: WKInterfaceController { 


    @IBOutlet weak var labelX: WKInterfaceLabel! 
    @IBOutlet weak var labelY: WKInterfaceLabel! 
    @IBOutlet weak var labelZ: WKInterfaceLabel! 
    let motionManager = CMMotionManager() 


    override func awakeWithContext(context: AnyObject?) { 
     super.awakeWithContext(context) 

     motionManager.accelerometerUpdateInterval = 0.1 
    } 

    override func willActivate() { 
     super.willActivate() 

     if (motionManager.accelerometerAvailable == true) { 
      let handler:CMAccelerometerHandler = {(data: CMAccelerometerData?, error: NSError?) -> Void in 
       self.labelX.setText(String(format: "%.2f", data!.acceleration.x)) 
       self.labelY.setText(String(format: "%.2f", data!.acceleration.y)) 
       self.labelZ.setText(String(format: "%.2f", data!.acceleration.z)) 
      } 
      motionManager.startAccelerometerUpdatesToQueue(NSOperationQueue.currentQueue()!, withHandler: handler) 
     } 
     else { 
      self.labelX.setText("not available") 
      self.labelY.setText("not available") 
      self.labelZ.setText("not available") 
     } 
    } 

    override func didDeactivate() { 
     super.didDeactivate() 

     motionManager.stopAccelerometerUpdates() 
    } 
} 
+2

Grazie per citare il mio codice: https://github.com/shu223/watchOS-2-Sampler/blob/master/watchOS2Sampler%20WatchKit%20Extension/AccelerometerInterfaceController.swift Sarei felice se presenti questo link come riferimento :) – shu223

+0

No, abbiamo provato questo codice con watch OS 2.1 ma questo codice mostra i dati dell'accelerometro dell'iPhone abbinato. Quando ci si sposta, l'orologio non riflette o modifica alcun dato. Ma se si sposta Telefono, inizierà a riflettere. – Nikh1414

+0

Ho provato il codice dell'accelerometro e funziona perfettamente (mostra i dati dell'accelerometro Apple Watch)! – Osmani

2

per watchos 4 & iOS 11: giroscopio dati (velocità di rotazione) è ora disponibile anche e tutti i dati del sensore dell'orologio sono accessibili tramite l'interfaccia aggiornata CoreMotion.

Più specificamente CMDeviceMotion si ottiene:

  • atteggiamento & velocità di rotazione
  • gravità & accelerazione utente
  • calibrato campo magnetico
  • ...

Attuazione del accelerometro con CMDeviceMotion:

class InterfaceController: WKInterfaceController { 

let motionManager = CMMotionManager() 

override func awake(withContext context: Any?) { 
    super.awake(withContext: context) 
    motionManager.deviceMotionUpdateInterval = 0.1 
} 

override func willActivate() { 
    super.willActivate() 
    if motionManager.isDeviceMotionAvailable { 
     let coreMotionHandler : CMDeviceMotionHandler = {(data: CMDeviceMotion?, error: Error?) -> Void in 
      // do something with data!.userAcceleration 
      // data!. can be used to access all the other properties mentioned above. Have a look in Xcode for the suggested variables or follow the link to CMDeviceMotion I have provided 
     } 
     motionManager.startDeviceMotionUpdates(to: OperationQueue.current!, withHandler: coreMotionHandler) 
    } else { 
     //notify user that no data is available 
    } 
} 

override func didDeactivate() { 
    super.didDeactivate() 
    motionManager.stopDeviceMotionUpdates() 
} 
} 

Note sulla realizzazione di cui sopra:

Anche se questo metodo vi porterà da A a B in termini di ottenere qualche reale dati di tempo da Apple Watch, una versione molto più bella e sicuramente più produttiva attende in questo official Apple tutorial, che spiega come separare la logica del sensore dal terfaceController in un modello separato ecc. - estremamente utile, secondo me.