2016-01-08 3 views
0

В Interfacecontroller.swift У меня есть класс переменной var motionManager = CMMotionManager() и var accTest = [Double](), которые я имею в виду в этой части кода:watchOS2 CMDeviceMotion не работает

let useOnlyAccelerometer = true 

    if useOnlyAccelerometer { 

     motionManager.accelerometerUpdateInterval = 0.1 
     if motionManager.accelerometerAvailable { 
      let handler:CMAccelerometerHandler = {(data: CMAccelerometerData?, error: NSError?) -> Void in 
       self.statusLabel.setText(String(format: "%.2f", data!.acceleration.x)) 
       self.accTest.append(data!.acceleration.x) 
      } 
      motionManager.startAccelerometerUpdatesToQueue(NSOperationQueue.currentQueue()!, withHandler: handler) 
     } 
    } else { 

     motionManager.deviceMotionUpdateInterval = 0.1 
     if motionManager.deviceMotionAvailable { 
      let handler:CMDeviceMotionHandler = {(motion: CMDeviceMotion?, error: NSError?) -> Void in 
       self.statusLabel.setText(String(format: "%.2f", motion!.userAcceleration.x)) 
       self.accTest.append(motion!.userAcceleration.x) 
      } 
      motionManager.startDeviceMotionUpdatesToQueue(NSOperationQueue.currentQueue()!, withHandler: handler) 

     } 
    } 

Использование непосредственно акселерометра работ. Теперь, если я изменю useOnlyAccelerometer на false, тогда это не сработает. Я не понимаю разницу или что происходит неправильно. На iPhone это действительно работает, и согласно документации watchOS2 должен поддерживать CMDeviceMotion. Есть идеи?

ответ

0

Мое предположение, что магнитометр не поддерживается на Apple Watch 1-го поколения. Ifixit показал, что на часах есть магнит, чтобы подключить его к зарядному устройству. В лабораториях WWDC 2016 я спросил у инженера Apple, будет ли когда-нибудь поддерживаться магнитометр и получится довольно delphic ответ: «для этого потребуется мощный магнитометр, не так ли?» Я понятия не имею, означает ли то, что в будущем будет поддержка или нет.

Таким образом, если магнитометр не поддерживается, то возвращаемое значение CMDeviceMotion для

public var magneticField: CMCalibratedMagneticField { get }

будет неопределенным. Предложите подать отчет об ошибке.

+0

Хорошо, спасибо. Тогда по крайней мере я могу перестать пытаться сейчас ... :-) – Pieter

Смежные вопросы