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
应用程序在向一个方向移动时会计数,然后等待相反方向移动结束后,再开始计数。我得到了一个计数,但它缺乏精确度。校准很困难...如果需要可以提供代码。
如何使用内部的重力或运动传感器 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
应用程序在向一个方向移动时会计数,然后等待相反方向移动结束后,再开始计数。我得到了一个计数,但它缺乏精确度。校准很困难...如果需要可以提供代码。