iOS加速计的简单使用

导入头文件
#import "ViewController.h"
#import 

@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);

你可能感兴趣的:(iOS加速计的简单使用)