Как узнать, спит ли устройство - PullRequest
10 голосов
/ 23 ноября 2010

Вот мой сценарий.У меня есть приложение, которое играет фоновые звуки.С помощью BroadcastReceiver я могу сказать, когда дисплей выключится, а затем убить звуки.Я также могу сказать, если экран снова включается.Однако, если устройство находится в состоянии блокировки, я не хочу, чтобы звук запускался.Поэтому я жду, чтобы ACTION_USER_PRESENT намеревался подать сигнал.Это все работает, за исключением того, что если пользователь быстро включит экран после его выключения, вы не получите экран блокировки или сообщение ACTION_USER_PRESENT.Итак, есть ли способ узнать, когда экран снова включается, заблокировано ли устройство или нет, что, я думаю, также означает спящий режим или нет?

Ответы [ 3 ]

12 голосов
/ 07 марта 2012
((PowerManager) getSystemService(Context.POWER_SERVICE)).isScreenOn()
9 голосов
/ 24 ноября 2010

Вы можете попробовать KeyguardManager , чтобы проверить, заблокировано ли устройство. Вот код (я сам не пробовал):

KeyguardManager kgMgr = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
boolean showing = kgMgr.inKeyguardRestrictedInputMode();

Удачи!

0 голосов
/ 08 октября 2012
((PowerManager) getSystemService(Context.POWER_SERVICE)).isScreenOn()

сообщает, включен ли экран.Таким образом, это происходит, если экран включен, но устройство заблокировано.Вместо этого

inKeyguardRestrictedInputMode()

становится истинным, только если устройство заблокировано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...