传感器- 加速计 - CoreMotion
/**
* CoreMotion
*
*/
#import "ViewController.h"
#import <CoreMotion/CoreMotion.h> // 导入框架
@interface ViewController ()
@property (nonatomic, strong) CMMotionManager *mgr;// 必须搞成全局的
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// [self push];
[self pull];
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
CMAcceleration acceleration = self.mgr.accelerometerData.acceleration;
LogRed(@"%f --- %f ---- %f",acceleration.x, acceleration.y, acceleration.z);
}
/**
* pull --- 需要的时候, 采集
*/
- (void)pull
{
// 1. 创建运动管理者对象
self.mgr = [[CMMotionManager alloc] init];
// 2. 判断加速计是否可用
if (self.mgr.isAccelerometerAvailable) {
// 4. 开始采样 --- pull
[self.mgr startAccelerometerUpdates];
}else{
LogGreen(@"加速计不可用");
}
}
/**
* push --- 根据设置的采集时间间隔, 实时采集
*/
- (void)push
{
// 1. 创建运动管理者对象
self.mgr = [[CMMotionManager alloc] init];
// 2. 判断加速计是否可用
if (self.mgr.isAccelerometerAvailable) {
/**
* accelerometerUpdateInterval --- 采样时间
isAccelerometerActive --- 是否正在采集
startAccelerometerUpdates --- pull
startAccelerometerUpdatesToQueue --- push
stopAccelerometerUpdates --- 停止采样
accelerometerData --- 采集到的数据
*/
// 3. 设置采样间隔
self.mgr.accelerometerUpdateInterval = 1.0 / 30.0;
// 4. 开始采样
[self.mgr startAccelerometerUpdatesToQueue:[NSOperationQueue mainQueue] withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) {
// 采集到数据时, 就会调用
if(error) return;
CMAcceleration acceleration = accelerometerData.acceleration;
LogRed(@"%f --- %f ---- %f",acceleration.x, acceleration.y, acceleration.z);
}];
}else{
LogGreen(@"加速计不可用");
}
}