ios - precio - apple watch series 4
¿Hay alguna forma de acceder al acelerómetro desde el Apple Watch? (4)
No parece que WatchKit lanzado hoy tenga tal API incluida.
Lo conseguiremos probablemente el próximo año, cuando Apple nos permita construir aplicaciones completas. Hasta ahora solo es UI, Miradas y Notificaciones.
Actualización : Apple ha proporcionado API para desarrolladores ahora. Comprueba la respuesta de casillas.
No. El acceso directo a los sensores de Apple Watch (que incluyen el acelerómetro) no es posible.
Como siempre, si esto es algo que le gustaría, presente una solicitud en https://bugreport.apple.com .
Actualización para watchOS 4 y iOS 11: los datos del giroscopio (tasa de rotación) ahora también están disponibles y se puede acceder a todos los datos del sensor del reloj a través de la interfaz CoreMotion actualizada.
Más específicamente, CMDeviceMotion te consigue:
- tasa de rotación y actitud
- gravedad y aceleración del usuario
- campo magnético calibrado
- ...
Implementación del acelerómetro 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()
}
}
Notas sobre la implementación anterior:
Si bien este método lo llevará de A a B en términos de obtener datos en tiempo real del Apple Watch, en este tutorial oficial de Apple le espera una versión mucho más agradable y definitivamente más lista para la producción en un modelo separado, etc. - extremadamente útil, en mi opinión.
La información de datos del sensor ahora está disponible en Watchkit for watchOS 2.0
.
Puede consultar esta información en la siguiente sesión, que es un total de 30 minutos de presentación. Si no desea ver la sesión completa, salte directamente a las CoreMotion
y HealthKit
, que se encuentran entre 22 y 28 minutos:
WatchKit para la sesión de watchOS 2.0 en WWDC 2015
Implementación de la frecuencia cardíaca
https://developer.apple.com/documentation/healthkit/hkworkout
Implementacion Acelerometro
Aquí está la implementación del acelerómetro en la extensión de WatchKit, aquí está la 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()
}
}