简单的iPhone动作检测

Lin*_*int 21 iphone xcode objective-c core-motion

我需要检测陀螺仪/加速度计何时被激活一定量.基本上是检测设备何时移动.我对Core Motion一无所知.

也许有人可以指导我参加初学者教程或其他什么.

提前致谢.

Kay*_*Kay 35

我认为你必须使用Core Motion.好消息是,对您的问题域使用并不困难.开始阅读" 事件处理指南",尤其是"处理已处理设备 - 运动数据"部分.如果你是在明知只是有兴趣的是轻微的运动作出,如你所说,你可以省略旋转处理和窄信号处理上CMDeviceMotion.userAcceleration.这是因为每次旋转都会产生加速度计信号.

创建一个CMDeviceMotionHandler,如startDeviceMotionUpdatesToQueue:withHandler中所述: 您的CMDeviceMotionHandler应该执行以下操作:

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
}
Run Code Online (Sandbox Code Playgroud)

基本上就是这样.请记住,每次加速都会有一个对应物.这意味着,如果您施加一个力来向右移动(即加速)设备,则会有一个用于减速的对应物来停止运动并让设备停留在新位置.因此if,对于每一个动作,你的条件将变为真实两倍.