最近在看传感器这方面的东西,发现Android封装了好多传感器,终于知道自动屏幕感应亮度是怎么做的了;
来分享一下,其实代码也非常简单:
public class MainActivity extends Activity {
private SensorManager sensorManager;
private TextView light;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
light = (TextView) findViewById(R.id.light_level);
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
sensorManager.registerListener(listener, sensor, SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
protected void onDestroy() {
super.onDestroy();
if (sensorManager != null) {
sensorManager.unregisterListener(listener);
}
}
private SensorEventListener listener = new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
// values数组中第一个下标的值就是当前的光照强度
float value = event.values[0];
light.setText("当前亮度为" + value + " lx");
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
};
}
这就是全部代码!初始化SensorManager,Sensor,还有注册监听器,values数组中第一个下标的值就是当前的光照强度