传感器开发

Android 传感器种类:

  • 光照传感器
  • 压力
  • 加速度 == 重力传感器
  • 方向
  • 陀螺仪
  • 磁极
  • 温度
  • 湿度

获取设备上所有的传感器:
sensorManager.getSensorList( Sensor.TYPE_ALL )

传感器的 使用

  • 赛车游戏
  • 微信摇一摇 (加速传感器)
  • 指南针

传感器开发关键 API

SensorManager:
    传感器管理器
    注册、关闭 传感器
Sensor:
    传感器 的信息
    (传感器的类型)
SensorEventListener:
    监控 传感器变化的  监听器
SensorEvent:
    传感器监听的 具体参数值
    .values      [ 具体的传感器值 ]

传感器开发步骤:

  1. 获取   SensorManager

        传感器管理器

        getSystemService( Context.SENSOR_SERVICE )
  2. 获取   Sensor

        具体的传感器

        sensorManager.getDefaultSensor( Sensor.TYPE_LIGHT )
  3. 为传感器   注册 监听器

        sensorManager.registlistener( listener, sensor, SensorManager.速率 )

    其中:

        listener :
            实现了 SensorEventListener 接口的 子类

                1. onSensorChanged( SensorEvent event)   监听器变化

                2. onAccuracyChanged(Sensor sensor, int accuracy)
  4. 释放 监听器资源

     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);
}

推荐阅读更多精彩内容