iOS學習筆記34 加速計和陀螺儀

2022-07-23 22:54:27 字數 2135 閱讀 4585

我們知道有一些ios的應用,會有一些特殊的要求,比如:

電子羅盤指南針之類的應用:讓我們知道方向。

運動型別軟體:讓我們知道我們跑步多少公里。

社交軟體中的搖一搖功能。

遊戲中扮演角色類中根據裝置的晃動等進行操作。

其實,他們多半是使用了ios中的乙個核心運動框架coremotion.framework

感測器介紹:

加速度計:

加速度計的原理很簡單,現在手機裡面基本配備的都是3維線感測器,也就是說,用來測量x,y,z三個軸上的加速力。加速力就是當物體在加速過程中作用在物體上的力,就好比地球引力,也就是重力。

陀螺儀:

陀螺儀的主要作用,是基於角動量守恆的理論,沿著某個特定的座標軸測量旋轉速率。在使用中,陀螺儀的轉子在高速旋轉時,始終指向乙個固定的方向,當運動物體的運動方向偏離預定方向時,陀螺儀就可以感受出來。

coremotion主要負責三種資料:

實際上,這個裝置motion值就是通過加速度和旋轉速度進行變換算出來的

cmdevicemotion屬性介紹:

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

useracceleration:加速度資訊

rotationrate:即時的旋轉速率,是陀螺儀的輸出

使用coremotion的步驟:

初始化cmmotionmanager管理物件

呼叫管理物件的物件方法獲取資料,有2種方式

處理資料

當你不需要使用的時候,停止獲取資料

-(void)stopaccelerometerupdates;//停止獲取加速度計資料

-(void)stopgyroupdates;//停止獲取陀螺儀資料

-(void)stopdevicemotionupdates;//停止獲取裝置motion資料

在coremotion中有2種獲取資料方式:

push方式:

提供乙個執行緒管理器nsoperationqueue和乙個**blockcoremotion自動在每乙個取樣資料到來的時候**這個block,進行處理。在這種情況下,block中的操作會在你自己的主線程內執行。

pull方式:

你必須主動去向cmmotionmanager要資料,這個資料就是最近一次的取樣資料。你不去要,cmmotionmanager就不會給你。

1. 加速度計使用pull方式獲取:

- (void)useaccelerometerpull

//獲取並處理加速度計資料

cmaccelerometerdata *newestaccel = self.motionmanager.accelerometerdata;

nslog(@"x = %.04f",newestaccel.acceleration.x);

nslog(@"y = %.04f",newestaccel.acceleration.y);

nslog(@"z = %.04f",newestaccel.acceleration.z);

}

2. 加速度計使用push方式獲取:
- (void)useaccelerometerpush];}}

3. 陀螺儀使用push方式獲取,pull方式就不列出來了,和加速度計使用相似:
- (void)usegyropush];}}

iOS學習筆記34 加速計和陀螺儀

我們知道有一些ios的應用,會有一些特殊的要求,比如 電子羅盤指南針之類的應用 讓我們知道方向。運動型別軟體 讓我們知道我們跑步多少公里。社交軟體中的搖一搖功能。遊戲中扮演角色類中根據裝置的晃動等進行操作。其實,他們多半是使用了ios中的乙個核心運動框架coremotion.framework 感測...

Kali學習筆記34 配置TFTP和FTP服務

配置tftp 預設情況下windowsxp和2003是開啟tftp服務的 其他windows到控制面板設定好就行 kali系統也是安裝了tftp服務的 atftpd 下面是一些配置並放入乙個檔案 配置ftp 本來是要用pure ftpd的,不過配置源發現這個軟體不知道為什麼不存在了 於是採用vsft...

IOS學習筆記 檔案載入和儲存

以下是將屬性列表檔案plist資料內容以二進位制形式寫入檔案的 void writecapitols void 如你所見,我們將陣列資料轉換成了nsdata型別並寫入了檔案中。將資料讀取回記憶體要多執行一步,即指定檔案的型別。我們建立了乙個指標,如果檔案格式與指定的型別不同,可以換用原格式型別的指標...