1.Sensor Type
重力感應/加速度感應器 (G-Sensor)
光感應 (Light-Sensor)
溫度感應
方向感應
磁場、
臨近性
2.如何?Sensor編程
a.擷取系統服務(SENSOR_SERVICE)返回一個SensorManager 對象
sensormanager = (SensorManager)getSystemSeriver(SENSOR_SERVICE);
b.通過SensorManager對象擷取相應的Sensor類型的對象
sensorObject = sensormanager.getDefaultSensor(sensor Type);
c.聲明一個SensorEventListener 對象用於偵聽Sensor 事件,並重載onSensorChanged方法
SensorEventListener sensorListener = new SensorEventListener(){
};
d.註冊相應的SensorService
sensormanager.registerListener(sensorListener, sensorObject, Sensor TYPE);
e.銷毀相應的SensorService
sensormanager.unregisterListener(sensorListener, sensorObject);
f: SensorListener 介面是感應器應用程式的中心。它包括兩個必需方法:
onSensorChanged(int sensor,float values[]) 方法在感應器值更改時調用。
該方法只對受此應用程式監視的感應器調用(更多內容見下文)。該方法的參數包括:一個整數,指示更改的感應器;一個浮點值數組,表示感應器資料本身。有些感應器只提供一個資料值,另一些則提供三個浮點值。方向和加速表感應器都提供三個資料值。
當感應器的準確性更改時,將調用 onAccuracyChanged(int sensor,int accuracy) 方法。參數包括兩個整數:一個表示感應器,另一個表示該感應器新的準確值。
3.關於G-Sensor
Android 加速度感應器的類型是 Sensor.TYPE_ACCELEROMETER
通過 android.hardware.SensorEvent 返回加速度感應器值。
加速度感應器傳回值的單位是加速度的單位 m/s^2(米每二次方秒),有三個方向的值分別是
values[0]: x-axis 方向加速度
values[1]: y-axis 方向加速度
values[2]: z-axis 方向加速度
其中x,y,z方向的定義是以水平放置在的手機的右下腳為參照系座標原點
x 方向就是手機的水平方向,右為正
y 方向就是手機的水平垂直方向,前為正
y 方向就是手機的空間垂直方向,天空的方向為正,地球的方向為負
需要注意的是,由於地球固有的重力加速度g (值為9.8 m/s^2),
因此現實中實際加速度值應該是 z方向傳回值 - 9.8 m/s^2.
比如你以 2 m/s^2 的加速度將手機拋起,這時z方向的傳回值應該是 11.8 m/s^2.
反之若以手機以2 m/s^2 的加速度墜落,則z方向的傳回值應該是 7.8 m/s^2.
x,y方向則沒有上述限制。