android 之传感器(摘录)

来源:互联网 发布:stm32编程 编辑:程序博客网 时间:2024/06/07 03:49

获取手机支持的所有传感器:

//手机传感器管理器,用来管理所有的传感器
private SensorManager sensorManager;
//得到SensorManager对象
 sensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
 //获取手机全部的传感器
List<Sensor> sensors = sensorManager.getSensorList(Sensor.TYPE_ALL);
//迭代输出获得上的传感器
for (Sensor sensor : sensors) {
//System.out.println(sensor.getName().toString());
sb.append(sensor.getName().toString());
sb.append("\n");
}

 

传感器的使用:

1、实现SensorListener接口

2、获取传感器管理对象  sm = (SensorManager) getSystemService(SENSOR_SERVICE);
3、注册监听sm.registerListener(this,
                Sensor.TYPE_ACCELEROMETER |
                Sensor.TYPE_MAGNETIC_FIELD |
                Sensor.TYPE_ORIENTATION |
                Sensor.TYPE_GYROSCOPE |
                Sensor.TYPE_LIGHT |
                Sensor.TYPE_PRESSURE |
                Sensor.TYPE_TEMPERATURE |
                Sensor.TYPE_PROXIMITY |
                Sensor.TYPE_GRAVITY |
                Sensor.TYPE_LINEAR_ACCELERATION |
                Sensor.TYPE_ROTATION_VECTOR,
                SensorManager.SENSOR_DELAY_NORMAL);

public void onSensorChanged(int sensor, float[] values) {
        synchronized (this) {
            String str =  "X:" + values[0] + ",Y:" + values[1] + ",Z:" + values[2];
            switch (sensor){
            case Sensor.TYPE_ACCELEROMETER:
                View1.setText("加速度:" + str);
                break;   
            case Sensor.TYPE_MAGNETIC_FIELD:
                View2.setText("磁场:" + str);
                break;
            case Sensor.TYPE_ORIENTATION:
                View3.setText("定位:" + str);
                break;
            case Sensor.TYPE_GYROSCOPE:
                View4.setText("陀螺仪:" + str);
                break;
            case Sensor.TYPE_LIGHT:
                View5.setText("光线:" + str);
                break;
            case Sensor.TYPE_PRESSURE:
                View6.setText("压力:" + str);
                break;
            case Sensor.TYPE_TEMPERATURE:
                View7.setText("温度:" + str);
                break;
            case Sensor.TYPE_PROXIMITY:
                View8.setText("距离:" + str);
                break;
            case Sensor.TYPE_GRAVITY:
                View9.setText("重力:" + str);
                break;
            case Sensor.TYPE_LINEAR_ACCELERATION:
                View10.setText("线性加速度:" + str);
                break;
            case Sensor.TYPE_ROTATION_VECTOR:
                View11.setText("旋转矢量:" + str);
                break;
            default:
                View12.setText("NORMAL:" + str);
                break;
            }  
        }
    }

4、 @Override
    protected void onStop() {
        sm.unregisterListener(this);
        super.onStop();
    }