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

Как проверить статус включения/выключения экрана в onStop()?

как упоминалось здесь, когда экран погаснет, будет вызываться onStop() текущей Activity. Мне нужно проверить статус включения/выключения экрана, когда вызывается onStop() моего Activity. поэтому я зарегистрировал BroadcastReceiver для этих действий (ACTION_SCREEN_ON AND ACTION_SCREEN_OFF), чтобы записать текущий статус включения/выключения (и они работают правильно, я зарегистрировался!).
но когда я выключаю экран и проверяю статус включения/выключения в onStop, он говорит, что экран включен. Зачем? Я думаю, что приемник должен получить ACTION_SCREEN_OFF до того, как onStop вызывается так, что неправильно?

4b9b3361

Ответ 1

Вы можете попробовать использовать системную службу PowerManager для этой цели, вот пример и официальная документация (обратите внимание, что этот метод был добавлен в уровень API 7):

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

EDIT:

isScreenOn() метод устарел API уровня 21. Вместо этого вы должны использовать isInteractive:

boolean isScreenOn = pm.isInteractive();

http://developer.android.com/reference/android/os/PowerManager.html#isInteractive()