2016-01-08 41 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不支持磁力計。 Ifixit透露手錶上有磁鐵將其連接至充電器。在WWDC 2016的實驗室中,我問了一位蘋果工程師是否能夠支持磁力計,並得到了一個相當有限的答覆:「那需要一個強大的磁力計,不是嗎?」我不知道未來是否會有支持。

因此,如果磁力不被支持,那麼CMDeviceMotion對

public var magneticField: CMCalibratedMagneticField { get }

返回值是不確定的。會建議提交一份錯誤報告。

+0

好的,謝謝。那麼至少我現在可以停止嘗試...... :-) – Pieter