對于 iPhone 手機來說,畫面上下為 y 軸,左右為 x 軸,前後為 z 軸。各自向上、向右和前面為正方向。當向上方向有作用力時,y 屬性中設定相應的正值,當向左方向有作用力時,x 屬性中設定相應負值。加速度不僅受震動手機時施加作用力的影響,還會持續受重力的影響。是以手機如果垂直拿在手上的話,y 軸負方向将受重力作用, y 屬性将一直為負值(最小值為 -1.0)。相反,如果畫面的上方向朝向地下,則 y 屬性将一直為正值(最大值為 1.0)。當畫面與地面水準時,y 屬性值為 0 。
加速度傳感器以前用 UIAccelerometer 實作,但 Xcode6 後完全廢棄了 UIAccelerometer,使用 CoreMotion 替代它能監聽到 x、y、z 三個方向的加速度。具體使用步驟如下:
1、引用頭檔案 CoreMotion/CoreMotion.h,執行個體化 CMMotionManager 類。
2、向 CMMotionManager 的 accelerometerUpdateInterval 屬性中設定通知間隔時間值。
3、使用 [NSOperationQueue currentQueue] 建立一個監聽隊列。
4、使用 startAccelerometerUpdatesToQueue 方法更新監聽隊列,并設定回調函數用于接收加速度通知,通知間隔時間已經在第二步設定過。在回調函數中使用 accelerometerData.acceleration 相關屬性可以獲得 x、y、z 各個方向的加速度。accelerometerData.acceleration 擁有代表 x 軸方向加速度的 x 屬性、擁有代表 y 軸方向加速度的 y 屬性、擁有代表 z 軸方向加速度的 z 屬性。
在 iPhone 開發文檔中,推薦使用的通知間隔如下表:
用途
通知間隔
檢測裝置朝向時
1/10 - 1/20
在遊戲中需要實時使用加速度傳感器時
1/30 - 1/60
檢測敲擊裝置或者劇烈搖動裝置的情況下
1/70 - 1/100
Objective-C
Swift