Ответ 1
Для состояния включения экрана вы можете попробовать с ACTION_SCREEN_ON
и ACTION_SCREEN_OFF
Intent
s, как показано в этом сообщении в блоге: http://thinkandroid.wordpress.com/2010/01/24/handling-screen-off-and-screen-on-intents/
Мне интересно узнать, как обнаружить экранную яркость или яркость на Android 1.6.
Я нашел решение на уровне API 7. Его легко разработать:
PowerManager pm = (PowerManager)
getSystemService(Context.POWER_SERVICE);
boolean isScreenOn = pm.isScreenOn();
Но мне нужно решение для Android 1.x.
Вы можете мне предложить?
Спасибо.
Для состояния включения экрана вы можете попробовать с ACTION_SCREEN_ON
и ACTION_SCREEN_OFF
Intent
s, как показано в этом сообщении в блоге: http://thinkandroid.wordpress.com/2010/01/24/handling-screen-off-and-screen-on-intents/
Подход с 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();
}
}