ios 中 accelerometer 原理

來源:互聯網
上載者:User


所謂的加速感應器是利用使用者對 iPhone device 所做的力量來衡量其 加速度 與 重力 ,可以偵測三個方向的加速度,即
x,y,z 軸,透過 (x,y,z) 軸所丟出的參數,你可以得知類似以下狀況

(1) iPhone 是正面朝上還是背面朝上

(2) 使用者是正拿著還是測拿著 (可以配合自動旋轉功能)

(3) 使用在把手機拿動了多少距離,包括上下左右

加速感應器 (Acceleration) 偵測的單位為 g力 (即重力),正常情況我們都會受地心引力所影響,即一個
g 力,用平常的直立方式觀看 iPhone ,則其會在 y 軸得到 1g 的重力,而傾斜後就會在不同方向得到分散的 g 力,而如果快速移動你的 iPhone 的話,加速感應器則可以偵測 g 力的瞬間變化,來得知 iPhone 的移動。



在使用加速感應器的時候你必須建立一個遵循 UIAccelerometerDelegate 協定的
UIAccelerometer 類別,UIAccelerometer是以單例模式(singleton) 存在,再產生一個實例並 將此實例成為加速感應器的委派,宣告實例的程式碼如下:



UIAccelerometer *accelerometer = [UIAccelerometer sharedAccelerometer];

  再來你可以設定此實例的 更新頻率,你可以用以下程式碼來設定之,表示 30 秒更新一次

accelerometer.delegate = self;accelerometer.updateInterval  = 1.0f / 30.0f ;

  設定完委派後,你就必須要實做 accelerometer:didAccelerate 方法,這個方法接受兩個引數,第一個負責
UIAccelerometer 實例的參考,第二個是 UIAccleration 物件,下面的應用方式是將偵測到的加速度值顯示在某個 label 上面

-(void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration{NSString *accelerateNum  = [[NSString alloc] initWithFormat:@" X: %g\tY:%g\tZ:%g", acceleration.x , acceleration.y, acceleration.z];label.text = accelerateNum ;[accelerateNum release];} 

至於如果要 偵測搖晃 的話,可以利用下面這段程式碼  


-(void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration{    if (fabsf (acceleration.x) > 1.0) {         //表示 X 軸方向大於 1 的時候就會發生某事    }}
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.