iOS加速計的簡單使用

導入頭文件
#import "ViewController.h"
#import <CoreMotion/CoreMotion.h>

@interface ViewController ()

/** 運動管理者對象 */
@property (nonatomic, strong) CMMotionManager *mgr;
@end
  • iOS4之前
- (void)viewDidLoad {
    [super viewDidLoad];

    // 1.獲取單例對象
    UIAccelerometer *accelerometer = [UIAccelerometer sharedAccelerometer];

    // 2.設(shè)置代理(在代理方法中拿到對應(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ù)據(jù)(采集頻率高)
創(chuàng)建運動管理者對象
判斷加速計是否可用
設(shè)置采樣間隔
開始采集數(shù)據(jù)

 // push方式
    // 1.判斷加速計是否可用
    if (!self.mgr.isAccelerometerAvailable) {
        NSLog(@"加速計不可用");
        return;
    }

    // 2.設(shè)置采樣間隔
    self.mgr.accelerometerUpdateInterval = 1.0;

    // 3.開始采樣
    [self.mgr startAccelerometerUpdatesToQueue:[NSOperationQueue mainQueue] withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) {
        if (error) return;

        // 獲取加速計的信息
        CMAcceleration acceleration = accelerometerData.acceleration;
        NSLog(@"x:%f y:%f z:%f", acceleration.x, acceleration.y, acceleration.z);
    }];
pull

pull方式:在有需要的時候,再主動去采集數(shù)據(jù)
創(chuàng)建運動管理者對象
判斷加速計是否可用
開始采樣
需要時通過運動管理者去獲取數(shù)據(jù)

 // 1.判斷加速計是否可用
    if (!self.mgr.isAccelerometerAvailable) {
        NSLog(@"加速計不可用");
        return;
    }

    // 2.開始采樣
    [self.mgr startAccelerometerUpdates];

    // 在需要的時候,主動獲取.獲取加速計信息
    CMAcceleration acceleration = self.mgr.accelerometerData.acceleration;
    NSLog(@"x:%f y:%f z:%f", acceleration.x, acceleration.y, acceleration.z);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容