您的位置:首页 > 其它

传感器- 加速计 - CoreMotion

2015-09-24 11:43 190 查看
/**

* 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(@"加速计不可用");

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: