iOS Core Motion基本使用

Core Motion可以讓開發(fā)者從各個內(nèi)置傳感器那里獲取未經(jīng)修改的傳感數(shù)據(jù),并觀測或響應設備各種運動和角度變化使碾。通過這些傳感器可以獲取加速度值蜜徽,陀螺儀值,設備motion值等票摇。

CoreMotionManager

CoreMotionManager類能夠使用到設備的所有移動數(shù)據(jù)(motion data)拘鞋,Core Motion框架提供了兩種對motion數(shù)據(jù)的操作方式,一個是"pull"矢门,另一個是"push"盆色,其中"pull"

方式能夠以CoreMotionManager的只讀方式獲取當前任何傳感器狀態(tài)或是組合數(shù)據(jù)灰蛙。"push"方式則是以塊或者閉包的形式收集到你想要得到的數(shù)據(jù)并且會在特定周期內(nèi)得到實時的更新。

push:提供一個線程管理器NSOperationQueue和一個回調(diào)Block隔躲,CoreMotion自動在每一個采樣數(shù)據(jù)到來的時候回調(diào)這個Block摩梧,進行處理。在這種情況下宣旱,Block中的操作會在你自己的主線程內(nèi)執(zhí)行

pull:你必須主動去向CMMotionManager要數(shù)據(jù)仅父,這個數(shù)據(jù)就是最近一次的采樣數(shù)據(jù)。你不去要浑吟,CMMotionManager就不會給你,在這種情況下笙纤,Core Motion所有的操作都在自己的后臺線程中進行,不會有任何干擾你當前線程的行為

Core Motion的基本使用:初始化->獲取數(shù)據(jù)->處理數(shù)據(jù)->不需要時 停止獲取數(shù)據(jù), 為了保證性能组力,蘋果建議在使用CoreMotionManager的時候采用單例模式省容。

-(void)stopAccelerometerUpdates;//停止獲取加速度計數(shù)據(jù)

-(void)stopGyroUpdates;//停止獲取陀螺儀數(shù)據(jù)

-(void)stopDeviceMotionUpdates;//停止獲取設備motion數(shù)據(jù)

CoreMotion主要負責三種數(shù)據(jù):

加速度值CMAccelerometerData

陀螺儀值CMGyroData

設備motion值CMDeviceMotion

CMDeviceMotion屬性介紹:

attitude:通俗來講,就是告訴你手機在當前空間的位置和姿勢

gravity:重力信息忿项,其本質(zhì)是重力加速度矢量在當前設備的參考坐標系中的表達

userAcceleration:加速度信息

rotationRate:即時的旋轉(zhuǎn)速率蓉冈,是陀螺儀的輸出

CMMotionManager *mManager = [[CMMotionManager alloc] init];

_mManager = mManager;

//加速度器檢測

if ([mManager isAccelerometerAvailable]) {//是否可用

NSLog(@"Accelerometer is available");

}else{

NSLog(@"Accelerometer is not available");

}

if ([mManager isAccelerometerActive]) {//是否啟動

NSLog(@"Accelerometer is active");

}else{

NSLog(@"Accelerometer is not actiove");

}

//陀螺儀檢測

if ([mManager isGyroAvailable]) {

NSLog(@"Gryro is available");

}else{

NSLog(@"Gryro is not available");

}

if ([mManager isGyroActive]) {

NSLog(@"Gryo is active");

}else{

NSLog(@"Gryo is not active");

}

/************************獲取加速度***********************/

//1.push 方式

if ([mManager isAccelerometerAvailable] ) {

NSOperationQueue *queue = [[NSOperationQueue alloc] init];

mManager.accelerometerUpdateInterval = 0.01;

[mManager startAccelerometerUpdatesToQueue:queue withHandler:^(CMAccelerometerData * _Nullable accelerometerData, NSError * _Nullable error) {

NSLog(@"X = %.04f, Y = %.04f, Z = %.04f",accelerometerData.acceleration.x, accelerometerData.acceleration.y, accelerometerData.acceleration.z);

}];

}

//2.pull方式 備注:pull方式獲取acceletation數(shù)據(jù),需要自己實現(xiàn)計時器功能

if ([mManager isAccelerometerAvailable]) {//是否可用

NSLog(@"111Accelerometer is available");

mManager.accelerometerUpdateInterval = 0.01;//頻率100HZ

[mManager startAccelerometerUpdates];//開始更新

}

NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(updateAccelerometer) userInfo:nil repeats:YES];

[timer fire];

/************************獲取陀螺儀***********************/

if ([mManager isGyroAvailable]) {

NSOperationQueue *queue = [[NSOperationQueue alloc] init];

mManager.accelerometerUpdateInterval = 0.01;

[mManager startGyroUpdatesToQueue:queue withHandler:^(CMGyroData * _Nullable gyroData, NSError * _Nullable error) {

NSLog(@"X = %.04f, Y = %.04f, Z = %.04f",gyroData.rotationRate.x, gyroData.rotationRate.y, gyroData.rotationRate.z);

}];

}

參考:http://www.cocoachina.com/ios/20141103/10111.html

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末城舞,一起剝皮案震驚了整個濱河市轩触,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌家夺,老刑警劉巖脱柱,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異拉馋,居然都是意外死亡榨为,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門煌茴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來随闺,“玉大人,你說我怎么就攤上這事蔓腐【乩郑” “怎么了?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵回论,是天一觀的道長散罕。 經(jīng)常有香客問我,道長傀蓉,這世上最難降的妖魔是什么欧漱? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮葬燎,結果婚禮上误甚,老公的妹妹穿的比我還像新娘缚甩。我一直安慰自己,他們只是感情好靶草,可當我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布蹄胰。 她就那樣靜靜地躺著,像睡著了一般奕翔。 火紅的嫁衣襯著肌膚如雪裕寨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天派继,我揣著相機與錄音宾袜,去河邊找鬼。 笑死驾窟,一個胖子當著我的面吹牛庆猫,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播绅络,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼月培,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了恩急?” 一聲冷哼從身側響起杉畜,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎衷恭,沒想到半個月后此叠,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡随珠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年灭袁,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片窗看。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡茸歧,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出显沈,到底是詐尸還是另有隱情软瞎,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布构罗,位于F島的核電站铜涉,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏遂唧。R本人自食惡果不足惜芙代,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望盖彭。 院中可真熱鬧纹烹,春花似錦页滚、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至片挂,卻和暖如春幻林,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背音念。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工沪饺, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人闷愤。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓整葡,卻偏偏與公主長得像,于是被迫代替她去往敵國和親讥脐。 傳聞我的和親對象是個殘疾皇子遭居,可洞房花燭夜當晚...
    茶點故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容