Non sembra che WatchKit sia stato rilasciato oggi.C'è un modo per accedere all'accelerometro da Apple Watch?
risposta
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.
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.
è disponibile ora, e ho condiviso il codice e le risorse di seguito. – casillas
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()
}
}
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
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
Ho provato il codice dell'accelerometro e funziona perfettamente (mostra i dati dell'accelerometro Apple Watch)! – Osmani
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.
Questo è scaduto ora, vedere altre risposte di Casillas per l'aggiornamento di WatchOS 2 – woody121