Подтвердить что ты не робот

Как определить, включен или выключен экран, если уровень API равен 4?

Мне интересно узнать, как обнаружить экранную яркость или яркость на Android 1.6.

Я нашел решение на уровне API 7. Его легко разработать:

PowerManager pm = (PowerManager)
getSystemService(Context.POWER_SERVICE);
boolean isScreenOn = pm.isScreenOn();

Но мне нужно решение для Android 1.x.

Вы можете мне предложить?

Спасибо.

4b9b3361

Ответ 2

Подход с ACTION_SCREEN_ON не работал у меня. После некоторых различных решений этот код, наконец, решил проблему для меня:

/**
 * Is the screen of the device on.
 * @param context the context
 * @return true when (at least one) screen is on
 */
public boolean isScreenOn(Context context) {
    if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) {
        DisplayManager dm = (DisplayManager) context.getSystemService(Context.DISPLAY_SERVICE);
        boolean screenOn = false;
        for (Display display : dm.getDisplays()) {
            if (display.getState() != Display.STATE_OFF) {
                screenOn = true;
            }
        }
        return screenOn;
    } else {
        PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
        //noinspection deprecation
        return pm.isScreenOn();
    }
}