导入头文件
#import "ViewController.h"
#import <CoreMotion/CoreMotion.h>
@interface ViewController ()
/** 运动管理者对象 */
@property (nonatomic, strong) CMMotionManager *mgr;
@end
- iOS4之前
- (void)viewDidLoad {
[super viewDidLoad];
// 1.获取单例对象
UIAccelerometer *accelerometer = [UIAccelerometer sharedAccelerometer];
// 2.设置代理(在代理方法中拿到对应的数值)
accelerometer.delegate = self;
// 3.设置采样间隔(多久采集一次信息)
accelerometer.updateInterval = 1.0;
}
// 代理方法
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration
{
NSLog(@"x:%f y:%f z:%f", acceleration.x, acceleration.y, acceleration.z);
}
- iOS5之后分成两种
push
push方式:实时采集所有数据(采集频率高)
创建运动管理者对象
判断加速计是否可用
设置采样间隔
开始采集数据
// push方式
// 1.判断加速计是否可用
if (!self.mgr.isAccelerometerAvailable) {
NSLog(@"加速计不可用");
return;
}
// 2.设置采样间隔
self.mgr.accelerometerUpdateInterval = 1.0;
// 3.开始采样
[self.mgr startAccelerometerUpdatesToQueue:[NSOperationQueue mainQueue] withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) {
if (error) return;
// 获取加速计的信息
CMAcceleration acceleration = accelerometerData.acceleration;
NSLog(@"x:%f y:%f z:%f", acceleration.x, acceleration.y, acceleration.z);
}];
pull
pull方式:在有需要的时候,再主动去采集数据
创建运动管理者对象
判断加速计是否可用
开始采样
需要时通过运动管理者去获取数据
// 1.判断加速计是否可用
if (!self.mgr.isAccelerometerAvailable) {
NSLog(@"加速计不可用");
return;
}
// 2.开始采样
[self.mgr startAccelerometerUpdates];
// 在需要的时候,主动获取.获取加速计信息
CMAcceleration acceleration = self.mgr.accelerometerData.acceleration;
NSLog(@"x:%f y:%f z:%f", acceleration.x, acceleration.y, acceleration.z);