最近在看傳感器這方面的東西,發現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數組中第一個下標的值就是當前的光照強度