2017-10-15 71 views
0

通過下面的代碼,我得到了加速計數據,現在我想用它來跟蹤用戶的運動,特別是速度。在iPhone上使用Core Motion瀏覽代碼時,他們使用motionManager對象,該對象可以爲accelerometerUpdateInterval設置一個值,並獲取.acceleration.x值。我如何處理回饋的原始數據以便確定例如一個人的移動速度有多快,或者他們的手臂擺動有多快?如何使用Apple Watch的加速度計數據?

//Record the data 
if CMSensorRecorder.isAccelerometerRecordingAvailable() { 
      print("Accelerometer available") 
      recorder.recordAccelerometer(forDuration: 20 * 60) // Record for 20 minutes 
     } 
    //Read the data 
    if CMSensorRecorder.isAccelerometerRecordingAvailable() { 
       let accelerometerData = recorder.accelerometerData(from: startDate, to: endDate) 
       for (index, data) in (accelerometerData?.enumerated())! { 
        print(index, data) 

       } 
      } 

Prints: 

0 388, 208409.082611, 529770182.607276, (0.038574, -0.762207, -0.652832) 
1 388, 208409.102722, 529770182.627387, (0.027588, -0.763184, -0.660889) 
2 388, 208409.122863, 529770182.647528, (0.027100, -0.763184, -0.661865) 
3 388, 208409.142974, 529770182.667639, (0.030029, -0.756836, -0.661865) 
4 388, 208409.163116, 529770182.687781, (0.026611, -0.764648, -0.665039) 

編輯:我發現這個庫看起來像是完美的,但在3年內沒有更新過...類似的東西仍然保留下來? https://github.com/MHaroonBaig/MotionKit

回答

0

我發現在手錶上使用CMMotionManager的效果與在iPhone上的效果一樣。通過這種方式,您可以在awake中實現startAccelerometerUpdates並實時反饋X Y Z座標的觀察位置,以便您更好地掌握數據;

var motionManager = CMMotionManager() 

override func awake(withContext context: Any?) { 
     super.awake(withContext: context) 

     manager.accelerometerUpdateInterval = 0.2 

     manager.startAccelerometerUpdates(to: OperationQueue.current!) { (data, error) in 
      if let myData = data { 

       print("x: \(myData.acceleration.x) y: \(myData.acceleration.y) z: \(myData.acceleration.z)") 
       if myData.acceleration.x > 1.5 && myData.acceleration.y > 1.5 { 

       } 
      } 
     } 



    }