写在前面
准备工作
#import <CoreMotion/CoreMotion.h>
正式开始
#import "ViewController.h"
#import <CoreMotion/CoreMotion.h>
@interface ViewController () {
CMMotionManager *motionManager;
}
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
[self initCoreMotionA];
}
#pragma mark - CoreMotion
#pragma mark 初始化
- (void)initCoreMotionA
{
/**
* 1.初始化加速度传感器
* 2.判断是否可用
* 3.设定更新频率
* 4.启动更新
*/
//初始化传感器,不可直接实例化,要弄为成员变量。
motionManager = [[CMMotionManager alloc]init];
//判断传感器是否可以使用
if ([motionManager isAccelerometerAvailable]) {//传感器可用
//设置采样频率
[motionManager setAccelerometerUpdateInterval:1 / 3];
//启动更新
[motionManager startAccelerometerUpdatesToQueue:[NSOperationQueue mainQueue] withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) {
//更新UI
self.xLabel.text = [NSString stringWithFormat:@"%.3f",accelerometerData.acceleration.x];
self.yLabel.text = [NSString stringWithFormat:@"%.3f",accelerometerData.acceleration.y];
}];
} else {//传感器不可用
NSLog(@"传感器不可用");
}
}
@end
分析
/**
* 1.初始化加速度传感器
* 2.判断是否可用
* 3.设定更新频率
* 4.启动更新
*/
-------------------------------------------------------------------------
//1.初始化传感器,不可直接实例化,要弄为成员变量。
motionManager = [[CMMotionManager alloc]init];
这个不能直接实例化,需要弄成成员变量,不然不好用,没效果。不清楚原因,还请知道的人解答。//2.判断传感器是否可以使用
if ([motionManager isAccelerometerAvailable]) {//传感器可用
} else {//传感器不可用
NSLog(@"传感器不可用");
}
//3.设置采样频率
[motionManager setAccelerometerUpdateInterval:1 / 3];
//4.启动更新
[motionManager startAccelerometerUpdatesToQueue:[NSOperationQueue mainQueue] withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) {
}];