iOS 运动检测:设备上下移动的次数

iOS Motion Detection: Count of times the device moves up and down

如何使用内部的重力或运动传感器 iPhone 来计算设备上下移动了多少次。例如像哑铃一样举了几次,我想数一数

如果这是非常简单的事情,请原谅我,但我对 iOS 开发很陌生,所以才提出这个问题。

您需要使用 Core Motion 框架来访问陀螺仪和加速度计数据。

let manager = CMMotionManager()
if manager.gyroAvailable {
  // CMMotionManager is available.
  manager.gyroUpdateInterval = 0.1
  manager.startGyroUpdates()

  // get gyro data...
  let queue = NSOperationQueue.mainQueue
  manager.startGyroUpdatesToQueue(queue) {
     (data, error) in
     // ... get data here
  }
}

// accelerometer data
if manager.accelerometerAvailable {
   manager.accelerometerUpdateInterval = 0.01
   manager.startAccelerometerUpdatesToQueue(NSOperationQueue.mainQueue()) {
      [weak self] (data: CMAccelerometerData!, error: NSError!) in
      // get data here ...
   }
}

结合这 2 个,您可以进行检测。试验结果,直到获得所需的正确动作。

我在 iPhone 上用 HTML5 方法做了一些实验。我想构建与您类似的东西,一个可以自动计算引体向上或仰卧起坐次数的应用程序。我尝试了这些的组合:

  • navigator.geolocation
  • window.ondevicemotion
  • window.ondeviceorientation

应用程序在向一个方向移动时会计数,然后等待相反方向移动结束后,再开始计数。我得到了一个计数,但它缺乏精确度。校准很困难...如果需要可以提供代码。