Android光线传感器使用方法详解

  public class LightSensorActivity extends AppCompatActivity implements SensorEventListener {

  private EditText editText;

  //传感器管理器对象

  private SensorManager sensorManager;

  @Override

  protected void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.activity_light_sensor);

  editText = findViewById(R.id.editText);

  sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);

  }

  @Override

  protected void onResume() {

  super.onResume();

  //第一个参数:SensorEventListener对象用this来指定就可以了

  // 第二个参数:传感器对象 光线传感器类型的常量:TYPE_LIGHT

  // 第三个参数:传感器数据的频率 这里采用适合游戏的频率

  sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT), SensorManager.SENSOR_DELAY_GAME);

  }

  @Override

  protected void onPause() {

  super.onPause();

  sensorManager.unregisterListener(this);

  }

  //当传感器的值,发生变化时,回调的方法

  @Override

  public void onSensorChanged(SensorEvent event) {

  //获取传感器的值

  float[] values= event.values;

  //获取传感器类型

  int sensorType = event.sensor.getType();

  StringBuilder stringBuilder = null;

  if (sensorType==Sensor.TYPE_LIGHT){

  stringBuilder = new StringBuilder();

  stringBuilder.append("光的强度值:");

  //添加获取的传感器的值

  stringBuilder.append(values[0]);

  editText.setText(stringBuilder.toString());

  }

  }

  //当传感器的精度,发生变化时,回调的方法

  @Override

  public void onAccuracyChanged(Sensor sensor, int accuracy) {

  }

  }