我需要检测陀螺仪/加速度计何时被激活一定量。基本上是检测设备何时移动。我对核心运动一无所知。
也许有人可以指导我入门教程或其他东西。
提前致谢。
我认为你必须使用 Core Motion。好消息是,它对于您的问题域来说并不难使用。开始阅读事件处理指南 https://developer.apple.com/library/ios/documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/Introduction/Introduction.html特别是处理已处理的设备运动数据部分。如果您只是想了解that正如您所说,发生了轻微的动作,您可以省略 CMDeviceMotion.userAcceleration 上的旋转处理和窄信号处理。这是因为每次旋转也会产生加速度计信号。
创建一个CMDeviceMotion 处理程序 http://developer.apple.com/library/ios/documentation/CoreMotion/Reference/CMMotionManager_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40009670-CH1-SW25如中所述startDeviceMotionUpdatesToQueue:withHandler: http://developer.apple.com/library/ios/documentation/CoreMotion/Reference/CMMotionManager_Class/Reference/Reference.html#//apple_ref/occ/instm/CMMotionManager/startDeviceMotionUpdatesToQueue:withHandler:您的 CMDeviceMotion 处理程序应该执行以下操作:
float accelerationThreshold = 0.2; // or whatever is appropriate - play around with different values
CMAcceleration userAcceleration = deviceMotion.userAcceleration;
if (fabs(userAcceleration.x) > accelerationThreshold)
|| fabs(userAcceleration.y) > accelerationThreshold
|| fabs(userAcceleration.z) > accelerationThreshold) {
// enter code here
}
基本上就是这样。请记住,每一次加速都会有一个对应的加速。这意味着,如果您施加力将设备向右移动(即加速),则会产生相应的减速来停止运动并使设备停留在新位置。所以你的if
对于每个动作,条件都会变为真两次。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)