Android 傳感器種類:
- 光照傳感器
- 壓力
- 加速度 == 重力傳感器
- 方向
- 陀螺儀
- 磁極
- 溫度
- 濕度
獲取設(shè)備上所有的傳感器:
sensorManager.getSensorList( Sensor.TYPE_ALL )
傳感器的 使用
- 賽車游戲
- 微信搖一搖 (加速傳感器)
- 指南針
傳感器開(kāi)發(fā)關(guān)鍵 API
SensorManager:
傳感器管理器
注冊(cè)、關(guān)閉 傳感器
Sensor:
傳感器 的信息
(傳感器的類型)
SensorEventListener:
監(jiān)控 傳感器變化的 監(jiān)聽(tīng)器
SensorEvent:
傳感器監(jiān)聽(tīng)的 具體參數(shù)值
.values [ 具體的傳感器值 ]
傳感器開(kāi)發(fā)步驟:
- 獲取 ? SensorManager
? ? 傳感器管理器
? ? getSystemService( Context.SENSOR_SERVICE )
- 獲取 ? Sensor
? ? 具體的傳感器
? ? sensorManager.getDefaultSensor( Sensor.TYPE_LIGHT )
- 為傳感器 ? 注冊(cè) 監(jiān)聽(tīng)器
? ? sensorManager.registlistener( listener, sensor, SensorManager.速率 )
其中:
? ? listener :
? ? ? ? 實(shí)現(xiàn)了 SensorEventListener 接口的 子類
? ? ? ? ? ? 1. onSensorChanged( SensorEvent event) ? 監(jiān)聽(tīng)器變化
? ? ? ? ? ? 2. onAccuracyChanged(Sensor sensor, int accuracy) -
釋放 監(jiān)聽(tīng)器資源
?sensorManager.unregistlistener( )
demo —— 加速度傳感器
Button button;
TextView textView1;
SensorManager sensorManager;
Sensor sensor;
MySensorEventListender mySensorEventListender;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(com.san.demos.R.layout.layout_main);
button = (Button) findViewById(com.san.demos.R.id.button);
textView1 = (TextView) findViewById(com.san.demos.R.id.textview1);
// 1. sensorManager
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
// 2. sensor_type
sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
// 3. registerListener()
sensorManager.registerListener(acceleSensorEventListener, sensor,
SensorManager.SENSOR_DELAY_UI);
}
// 加速度監(jiān)聽(tīng)傳感器
SensorEventListener acceleSensorEventListener = new SensorEventListener() {
// 監(jiān)聽(tīng)加速度變化
@Override
public void onSensorChanged(SensorEvent arg0) {
float[] values = arg0.values;
StringBuilder stringBuilder = new StringBuilder("加速度分別為:\n");
stringBuilder.append(" X 軸上:" + values[0] + '\n')
.append(" Y 軸上:" + values[1] + '\n')
.append(" Z 軸上:" + values[2] + '\n');
textView1.setText(stringBuilder.toString());
}
@Override
public void onAccuracyChanged(Sensor arg0, int arg1) {
// TODO Auto-generated method stub
}
};
@Override
protected void onDestroy() {
super.onDestroy();
// 釋放傳感器監(jiān)聽(tīng)資源
sensorManager.unregisterListener(acceleSensorEventListener);
}