天天看點

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

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]。該參數代表傳感器的物體距離,以厘米為機關。

繼續閱讀