デバイスが静止しているときを検出できるように処理をセットアップする方法 (いくつかのしきい値で)
以下のコードは期待どおりに動作しません (デバイスの向きによっては userAcceleration が大きくなり、ユーザーはデバイスを動かしません (この値はおそらく重力によるものです))。
self.motionManager = [[CMMotionManager alloc] init];
self.motionManager.accelerometerUpdateInterval = 1/2.0;
[self.motionManager startAccelerometerUpdatesToQueue:[NSOperationQueue currentQueue] withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) {
float accelerationThreshold = 0.75;
CMAcceleration userAcceleration = accelerometerData.acceleration;
if ((fabs(userAcceleration.x) > accelerationThreshold)
|| (fabs(userAcceleration.y) > accelerationThreshold)
|| (fabs(userAcceleration.z) > accelerationThreshold)) {
self.deviceMoved = YES;
} else {
self.deviceMoved = NO;
}
}];