ios 關於屏幕旋轉和屏幕晃動 – iPhone手機開發技術文章 iPhone軟體開發教學課程

內置加速計是智能手機最酷的特性之一,ios可以通過這個小設備知道用戶握持手機的方式,以及用戶是否移動瞭手機,ios使用加速計處理自動旋轉,並且許多遊戲都是用它作為控制機制,它還可以用於檢測搖動和其他突發的運動,此功能在iphone4之後得到進一步的拓展,還包括瞭一個內置的陀螺儀,可用於確定設備的方向與每條坐標軸之間的夾角。

第一 加速計

通過感知特定方向的慣性力總量,加速計可以測量出加速度和重力,ios設備內的加速計是一個三軸加速計,這意味著它能夠檢測出三維空間中的運動或重力引力。因此加速計不但可以指示握持電話的方式(如自動旋轉功能),而且如果電話放在桌子上的話還可以指示電話的正面朝上還是朝下。

加速計可以測量g引力(g代表重力),因此加速計返回值為1.0時,表示在特定的方向上感知到1g。

1 .如果是靜止握持iphone而沒有任何運動,那麼地球引力對其施加的力大約為1g

2. 如果是縱向豎直握持,那麼設備會檢測並報告在其y軸上施加的力大約為1g

3.如果是以一定的角度握持,那麼1g的力會分佈到不同的軸上,這取決於握持的方式,在以45度握持時,1g的力會均勻的分解到兩個軸上。如果檢測到加速計值遠大於1g,那麼可以判斷是突然運動,,正常使用時加速計在任何一個軸上都不會檢測到遠大於1g的值,如果搖動、墜落或投擲設備,那麼加速計便會在一個或多個軸上檢測到很大的力

下圖所示加速計所使用的三軸結構

第二 陀螺儀

陀螺儀可用於讀取描述設備圍繞其軸的旋轉的值。

如果其傳感器與加速計之間的區別看起來不那麼明顯,可以考慮平放在桌面上的iphone,如果在保持電話平放時旋轉它,加速計的值不會改變,這是因為讓電話移動的力(在這種情況下,隻有重力直接施加在z軸上)沒有改變


第三 CoreMotion 和動作管理器

在ios4和更高版本中,加速計和陀螺儀隻可以使用CoreMotion框架訪問,此框架提供瞭CMMotionmanager類(當然還有其他的類),該類用作描述用戶如何移動設備所有值的途徑

cmmotionmanager類實際上不是一個獨立的實體,但應用程序應該將他視為獨立的,應該僅為每個應用程序創建一個CMMotionmanager類,並且使用普通的alloc和init方法

發佈留言