目前,我正在开发一个需要检测iPhone是否启动和停止垂直移动的应用程序。我需要能够检测到很短的垂直距离(50-100厘米),即如果有人下蹲。
有没有一种方法可以计算出Core Motion框架?
let motion = CMMotionManager()
if motion.isDeviceMotionAvailable {
self.motion.deviceMotionUpdateInterval = 1.0 / 60.0
self.motion.showsDeviceMovementDisplay = true
self.motion.startDeviceMotionUpdates(using: .xMagneticNorthZVertical, to: .main, withHandler: { (data, error) in
if let validData = data {
// Just a random minimum acceleration threshold
if validData.userAcceleration.y > 3 {
print(validData.userAcceleration.y)
}
}
})
}
有没有一种方法可以计算Core Motion框架行进的垂直距离?
Core Motion可以检测姿势(手机的方向)和加速度(手机如何启动或停止移动,加速或减速)。平滑的垂直移动根本不会出现。您可能知道运动开始和结束,但是这些事件发生的距离并不大。您可能会基于初始加速(这可以让您计算出行驶的速度)和减速之前的时间来猜测。但这不只是猜测。
因此,您是说在技术上不可能检测一个人是否完全下蹲?
您的问题中没有“下蹲”。我什么也没说。我说的是我的意思。电话传感器中没有固有的东西可以告诉您电话现在离地面2英尺。如果蹲得足够快且突然,您会感觉到起步和停顿都是抽搐,并猜测是蹲。您当然可以算出这些手势。但是您不能确定是深蹲还是确切知道它有多深。
我编辑了问题。感谢您抽出宝贵的时间。
您所做的编辑不会改变我的答案。您问CoreMotion框架能够检测到什么,我已经回答了。正如我在回答中所说,您将需要将数据收集到缓冲区中并对其进行加速和减速分析,并使用量和介入时间来猜测这是下蹲以及这段时间内的行进距离可能是多少。如果我是您,我将自己下蹲,开始收集数据,以便您可以看到数据的样子。