Android平台下感應器應用的開發–基礎知識

來源:互聯網
上載者:User

Android平台下的感應器包括加速度感應器(Accelerometer)、姿態感應器(Orientation)、磁場感應器(Magnetic Field)和光感應器(Light)。

Android 平台下感應器應用的開發通過監聽器機制來實現,要針對某一種或多種感應器開發應用,主要的步驟如下:

1. 建立SensorManager對象

2. 實現SensorListener介面

       這是開發感應器應用最主要的工作,實現SensorListener介面主要需要實現一下兩個方法。

  •         void onAccuracyChanged(int sensor, int accuracy):該方法在感應器的精確度發生變化時調用,SensorManager提供了3種精確度,由高到低分別為:SENSOR_STATUS_ACCURACY_HIGH、SENSOR_STATUS_ACCURACY_MEDIUM和SENSOR_STATUS_ACCURACY_LOW。參數accuracy為新的精確度。
  •         void onSensorChanged(int sensor, float[] values):該方法在感應器的資料發生變化時調用,開發感應器應用的主要的業務代碼應該放在這裡執行,如讀取資料並根據資料的變化進行相應的操作等。方法傳入的參數sensor為代表感應器類型的常量,values為float類型數組,其長度和內容因感應器類型的不同而變化。

3. 註冊SensorListener

  •         開發玩SensorListener之後,剩下的工作就是在程式的適當位置註冊監聽和取消監聽了。在這裡調用步驟1中獲得的SensorManager對象的registerListener方法來註冊監聽器,其接收的參數為監聽器對象、感應器類型以及感應器事件傳遞的頻度。
  •         取消註冊SensorListener時調用SensorManager的unregisterListener方法,一般來講註冊和取消註冊的方法應該成對出現,如果在Activity的onResume方法中註冊SensorListener監聽就應在onPause方法中取消註冊。

常用感應器簡介

1>. 加速度感應器Accelerometer

加速度感應器主要感應手機的運動,在註冊了感應器監聽器後加速度感應器主要捕獲3個參數values[0]、values[1]、values[2]。

values[0]:空間座標系中x軸方向上的加速度減去重力加速度減去中立加速度在x軸上的分量。

values[1]:空間座標系中x軸方向上的加速度減去重力加速度減去中立加速度在y軸上的分量。

values[2]:空間座標系中x軸方向上的加速度減去重力加速度減去中立加速度在z軸上的分量。

上述3個資料的單位均為米每二次方秒。

距離說明:

1.當手機平放到案頭靜止時,加速度為重力加速度g,通過0減去-g(重力加速度g方向為z軸反方向,故為負值)得到values[2]為g。

2.如果把手機水平方向右推,此時手機x方向上的加速度為正,即values[0]為正。

3.當把手機以a米每二次方秒的加速度豎值向上舉時,values[2]的傳回值為(a+g)米每二次方秒,通過a減去-g得到。

2>.姿態感應器Orientation

姿態感應器主要感應手機方位的變化,其每次讀取的都是靜態狀態值,在註冊了感應器監聽器後姿態感應器主要捕獲3個參數values[0]、values[1]、values[2],分別代表手機沿Yaw軸、Pitch軸和Roll軸轉過的角度。

1.Yaw軸是3個方向軸中唯一不變的軸,其方向總是豎直向上,和空間座標系中的z軸是等同的,也就是中立加速度g的反方向。

2.Pitch軸方向依賴於手機沿Yaw軸的轉動情況,即當手機沿Yaw轉過一定角度後,Pitch軸也相應圍繞Yaw軸轉過相同的角度。Pitch軸的位置依賴於手機沿Yaw軸轉過的角度,好比Yaw軸和Pitch軸是兩個焊死在一起成90度夾角的鐵棍。

3.Roll軸的方向雖然依賴於手機沿Yaw軸和Pitch軸轉動的情況,但是Roll軸的確定並不複雜,Roll軸與手機之間的相對關係是固定的。其總是沿著手機螢幕長邊正方向。

註:

1.Yaw軸永遠是豎直向上的方向,因為額在駕駛飛機的時候無論飛機如何旋轉/翻滾/飛行員都必須確定向上的舉對方向。

2.Pitch軸會隨著Yaw軸旋轉,實際上Pitch軸方向可以通過推算飛機的朝向,繞Pitch軸旋轉表示飛機上拉(抬頭起機)或下推(機頭向下)

3.Roll軸表示貫穿機身的軸,與飛機是相對靜止的,飛機繞Roll軸旋轉左傾或右傾。

3>.其他感應器

1. 磁場感應器Magnetic Field

磁場感應器主要用於感應周圍的磁感應強度,註冊監聽器後其主要捕獲3個參數:values[0]、values[1]、values[2]。3個參數分別代表磁感應強度在空間座標系中3個方向軸上的分量,所有資料的單位為uT,即微特拉斯。

2. 光感應器Light

光感應器用於感應周圍的光強,註冊監聽器後只捕獲一個參數:values[0]。該參數代表周圍的光照強度,單位為勒克斯(lux)。

3. 距離感應器 Proximity

距離感應器用於感應周圍靠近的物體,在注註冊監聽器後只捕獲一個參數:values[0]。該參數代表感應器的物體距離,以厘米為單位。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.