2017-10-15 62 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と同じように機能することがわかりました。このようにしてstartAccelerometerUpdatesawakeに実装し、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 { 

       } 
      } 
     } 



    } 
関連する問題