在iOS5之后苹果对加速器传感器做个一个单独的库叫CoreMotion在这个库中苹果为我们封装了很多算法,下面我来简单介绍用CoreMotion来调用加速器
步骤一:这里写代码片
导入CoreMotion库,创建一个管理者
#import <CoreMotion/CoreMotion.h>
@interface ViewController ()
@property (nonatomic,strong) CMMotionManager *mgr;
@end
步骤二:
判断传感器是否可用
- (void)viewDidLoad {
[super viewDidLoad];
//1.创建motion管理者
self.mgr = [[CMMotionManager alloc]init];
//2.判断加速度传感器是否可用
if (self.mgr.isAccelerometerAvailable) {
//加速计可用
}else{
NSLog(@"加速度传感器不可用");
}
}
传感器的使用分为PULL和PUSH,PULL是主动获取传感器参数、PUSH是被动获取传感器参数
/**
* pull 设置后主动获取
*/
-(void)pull
{
[self.mgr startAccelerometerUpdates];
}
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
CMAcceleration acceleration = self.mgr.accelerometerData.acceleration;
NSLog(@"%f %f %f",acceleration.x,acceleration.y,acceleration.z);
}
/**
* push 设置后被动获取
*/
-(void)push
{
//3.设置采样间隔
self.mgr.accelerometerUpdateInterval = 1 / 60.0;
//4.开始采样
[self.mgr startAccelerometerUpdatesToQueue:[NSOperationQueue mainQueue] withHandler:^(CMAccelerometerData * _Nullable accelerometerData, NSError * _Nullable error) {
NSLog(@"%f %f %f",accelerometerData.acceleration.x,accelerometerData.acceleration.y,accelerometerData.acceleration.z);
}];
}