Android 传感器种类:
- 光照传感器
- 压力
- 加速度 == 重力传感器
- 方向
- 陀螺仪
- 磁极
- 温度
- 湿度
获取设备上所有的传感器:
sensorManager.getSensorList( Sensor.TYPE_ALL )
传感器的 使用
- 赛车游戏
- 微信摇一摇 (加速传感器)
- 指南针
传感器开发关键 API
SensorManager:
传感器管理器
注册、关闭 传感器
Sensor:
传感器 的信息
(传感器的类型)
SensorEventListener:
监控 传感器变化的 监听器
SensorEvent:
传感器监听的 具体参数值
.values [ 具体的传感器值 ]
传感器开发步骤:
- 获取 SensorManager
传感器管理器
getSystemService( Context.SENSOR_SERVICE )
- 获取 Sensor
具体的传感器
sensorManager.getDefaultSensor( Sensor.TYPE_LIGHT )
- 为传感器 注册 监听器
sensorManager.registlistener( listener, sensor, SensorManager.速率 )
其中:
listener :
实现了 SensorEventListener 接口的 子类
1. onSensorChanged( SensorEvent event) 监听器变化
2. onAccuracyChanged(Sensor sensor, int accuracy) -
释放 监听器资源
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);
}
// 加速度监听传感器
SensorEventListener acceleSensorEventListener = new SensorEventListener() {
// 监听加速度变化
@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();
// 释放传感器监听资源
sensorManager.unregisterListener(acceleSensorEventListener);
}