传感器的使用
- 获取传感器
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
//加速计传感器
accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
//磁力传感器
magnetic = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
//陀螺仪
gyroscope = sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE);
其他传感器:
Sensor.TYPE_PRESSURE 压力传感器
Sensor.TYPE_LIGHT 光线传感器
Sensor.TYPE_PROXIMITY 距离传感器
……
- 设置监听器获取数据
//注册监听器及传感器的刷新速率`SensorManager.SENSOR_DELAY_NORMAL`
sensorManager.registerListener(accelerometerListener,accelerometer,
SensorManager.SENSOR_DELAY_NORMAL);
//创建监听器
private SensorEventListener accelerometerListener=new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
if(event.sensor.getType()==Sensor.TYPE_ACCELEROMETER){
//当加速度改变时获取数据
accelerometerValues=event.values.clone();
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
//TODO: 由于环境等因素使传感器精度改变时执行的内容
}
};
传感器的刷新速率
SensorManager.SENSOR_DELAY_FASTEST 最大更新速率
SensorManager.SENSOR_DELAY_GAME 适用于游戏
SensorManager.SENSOR_DELAY_UI 适用于界面互交
SensorManager.SENSOR_DELAY_NORMAL 适用于改变屏幕方向
- 解除注册
@Override
protected void onPause() {
//在onResume中注册,onPause中解除注册
super.onPause();
sensorManager.unregisterListener(accelerometerListener);
}