Добавление ответа для проверки включения / выключения экрана:
// If you use API20 or more:
DisplayManager dm = (DisplayManager) context.getSystemService(Context.DISPLAY_SERVICE);
for (Display display : dm.getDisplays()) {
if (display.getState() != Display.STATE_OFF) {
return true;
}
}
return false;
// If you use less than API20:
PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
if (powerManager.isScreenOn()){ return true; }
Обратите внимание, что Display.getState()
также может возвращать STATE_DOZE
и STATE_DOZE_SUSPEND
, что означает, что экран включен особым образом. Больше информации о Display.getState()
и его возвращаемых значениях здесь: http://developer.android.com/reference/android/view/Display.html#getState()
Также обратите внимание, что хотя официальная документация рекомендует использовать isInteractive()
вместо isScreenOn()
, если вы действительно хотите узнать состояние экрана, Display.getState()
является лучшим вариантом из-за «особых» условий, которые устанавливают экран в то время как устройство не является интерактивным.