導(dǎo)入頭文件
#import "ViewController.h"
#import <CoreMotion/CoreMotion.h>
@interface ViewController ()
/** 運(yùn)動(dòng)管理者對(duì)象 */
@property (nonatomic, strong) CMMotionManager *mgr;
@end
- iOS4之前
- (void)viewDidLoad {
[super viewDidLoad];
// 1.獲取單例對(duì)象
UIAccelerometer *accelerometer = [UIAccelerometer sharedAccelerometer];
// 2.設(shè)置代理(在代理方法中拿到對(duì)應(yīng)的數(shù)值)
accelerometer.delegate = self;
// 3.設(shè)置采樣間隔(多久采集一次信息)
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方式:實(shí)時(shí)采集所有數(shù)據(jù)(采集頻率高)
創(chuàng)建運(yùn)動(dòng)管理者對(duì)象
判斷加速計(jì)是否可用
設(shè)置采樣間隔
開始采集數(shù)據(jù)
// push方式
// 1.判斷加速計(jì)是否可用
if (!self.mgr.isAccelerometerAvailable) {
NSLog(@"加速計(jì)不可用");
return;
}
// 2.設(shè)置采樣間隔
self.mgr.accelerometerUpdateInterval = 1.0;
// 3.開始采樣
[self.mgr startAccelerometerUpdatesToQueue:[NSOperationQueue mainQueue] withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) {
if (error) return;
// 獲取加速計(jì)的信息
CMAcceleration acceleration = accelerometerData.acceleration;
NSLog(@"x:%f y:%f z:%f", acceleration.x, acceleration.y, acceleration.z);
}];
pull
pull方式:在有需要的時(shí)候莹痢,再主動(dòng)去采集數(shù)據(jù)
創(chuàng)建運(yùn)動(dòng)管理者對(duì)象
判斷加速計(jì)是否可用
開始采樣
需要時(shí)通過運(yùn)動(dòng)管理者去獲取數(shù)據(jù)
// 1.判斷加速計(jì)是否可用
if (!self.mgr.isAccelerometerAvailable) {
NSLog(@"加速計(jì)不可用");
return;
}
// 2.開始采樣
[self.mgr startAccelerometerUpdates];
// 在需要的時(shí)候,主動(dòng)獲取.獲取加速計(jì)信息
CMAcceleration acceleration = self.mgr.accelerometerData.acceleration;
NSLog(@"x:%f y:%f z:%f", acceleration.x, acceleration.y, acceleration.z);