//创建CMMotionManager对象用于获取重力感应数据
CMMotionManager *_motionManager=[[CMMotionManager alloc] init];
//将当前的对象转换成__weak 对象,避免出现循环引用对象无法释放
ViewController * __weak weakSelf=self;
//判断设备是否能使用重力感应 if ([_motionManager isAccelerometerAvailable]) {
//设置每次获取数据的时间 [_motionManager setAccelerometerUpdateInterval:10/60.0];
//设置accelerometerDidChange方法获取数据 [_motionManager startAccelerometerUpdatesToQueue:[NSOperationQueue mainQueue] withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) { [weakSelf accelerometerDidChange:accelerometerData.acceleration]; }]; }
- (void)accelerometerDidChange:(CMAcceleration)acceleration { #define kFilteringFactor 0.5 //Use a basic low-pass filter to only keep the gravity in the accelerometer values
//x轴角速度 _accelerometer[0] = acceleration.x * kFilteringFactor + _accelerometer[0] * (1.0 - kFilteringFactor);
//y轴角速度 _accelerometer[1] = acceleration.y * kFilteringFactor + _accelerometer[1] * (1.0 - kFilteringFactor);
//z轴角速度 _accelerometer[2] = acceleration.z * kFilteringFactor + _accelerometer[2] * (1.0 - kFilteringFactor); }