Ну звучит так, будто люди ответили на аппаратную сторону. С точки зрения программного обеспечения это довольно просто.
public class LightTrigger {
private SensorManager mgr = null;
@Override
public void onCreate(Bundle savedInstanceState) {
//YOUR CODE HERE
mgr = (SensorManager) ctxt.getSystemService(Context.SENSOR_SERVICE);
mgr.registerListener(listener,
mgr.getDefaultSensor(Sensor.TYPE_LIGHT),
SensorManager.SENSOR_DELAY_UI);
}
private SensorEventListener listener = new SensorEventListener() {
public void onSensorChanged(SensorEvent e) {
//Handler code goes here
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
//I don't usually use this for light
}
}
}
Я обнаружил, что значения датчиков не меняются непрерывно. Я обычно вижу значения, исходящие от датчика, такие как - BRIGHT (~ 1000) - DIM (~ 600) - DARK (~ 100) - между ними ничего нет. Я думаю, что это может быть потому, что датчик освещения на моем телефоне вставлен (утоплен от прямого света) прямо рядом с динамиком телефона. Вероятно, он был разработан, чтобы помочь выяснить, держу ли я телефон до головы.
Надеюсь, это поможет!