2013-07-02
Android 中传感器的种类
加速度,Sensor.TYPE_ACCELEROMETER
陀螺仪,Sensor.TYPE_GYROSCOPE
亮度,Sensor.TYPE_LIGHT
地磁,Sensor.TYPE_MAGNETIC_FIELD
方向,Sensor.TYPE_ORIENTATION
压力,Sensor.TYPE_PRESSURE
近程,Sensor.TYPE_PROXIMITY
温度,Sensor.TYPE_TEMPERATURE
Android 中传感器的功能
SensorManager 是所有传感器的一个综合管理类,包括了传感器的种类、采样率、精准度等。
// 得到一个SensorManager对象
SensorManager mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
// 得到传感器列表
List<Sensor> sensors = mSensorManager.getSensorList(Sensor.TYPE_ORIENTATION);
// 注册传感器
boolean result = mSensorManager.registerListener(this, sensors, SensorManager.SENSOR_DELAY_FASTEST);
// 卸载传感器
mSensorManager.unregisterListener(this);
// SensorEventListener有两个接口方法
// 在传感器值更改时调用
onSensorChanged(SensorEvent event);
// SensorEvent 对象包括一组浮点数
float x = event.values[SensorManager.DATA_X];
float y = event.values[SensorManager.DATA_Y];
float z = event.values[SensorManager.DATA_Z];
// 在传感器的精准度发生改变时调用
// 参数accuracy表示传感器新的准确值
onAccuracyChanged(Sensor sensor, int accuracy);
示例:
public class SensorActivity extends Activity implements SensorEventListener {
private boolean mRegisteredSensor;
private SensorManager mSensorManager;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mRegisteredSensor = false;
mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
}
protected void onResume() {
super.onResume();
List<Sensor> sensors = mSensorManager.getSensorList(Sensor.TYPE_ORIENTATION);
if(sensors.size() > 0) {
mRegisteredSensor = mSensorManager.registerListener(this, sensors.get(0), SensorManager.SENSOR_DELAY_FASTEST);
}
}
protected void onPause() {
if(mRegisteredSensor){
mSensorManager.unregisterListener(this);
mRegisteredSensor = false;
}
super.onPause();
}
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
public void onSensorChanged(SensorEvent event) {
if(event.sensor.getType() == Sensor.TYPE_ORIENTATION) {
float x = event.values[SensorManager.DATA_X];
float y = event.values[SensorManager.DATA_Y];
float z = event.values[SensorManager.DATA_Z];
}
}
}
SensorManager 常用方法
getDefaultSensor, 得到默认的传感器对象
getInclination, 得到地磁传感器倾斜角的弧度数
getOrientation, 得到设备旋转的方向
getSensorList, 得到指定传感器的列表