如何使用Apple Watch的加速计数据?

时间:2017-10-15 14:44:15

标签: ios swift core-motion

通过下面的代码,我得到了加速度计数据,现在我想用它来跟踪用户的移动,特别是速度。在iPhone上使用Core Motion查看代码时,他们使用motionManager对象,可以为accelerometerUpdateInterval设置值,例如获取.acceleration.x值。我如何处理我给出的原始数据,以便我可以确定,例如一个人移动的速度有多快或手臂摆动的速度有多快?

//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)

编辑:我发现这个lib看起来很完美但是3年内还没有更新......类似的东西仍然保留了吗? re.findall()

1 个答案:

答案 0 :(得分:0)

我发现在手表上使用CMMotionManager的效果与在iPhone上的效果一样好。通过这种方式,您可以在startAccelerometerUpdates中实施awake并在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 {

                }
            }
        }



    }