Как выявить, что экран заблокирован?

В моем приложении мне нужно знать, когда устройство заблокировано (на HTC это похоже на короткое нажатие на кнопку «Питание»). Поэтому возникает вопрос: какое событие запускается, когда устройство заблокировано? Или устройство будет спать?

Solutions Collecting From Web of "Как выявить, что экран заблокирован?"

Вы должны расширить BroadcastReceiver и реализовать onReceive , например:

 public class YourBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (Intent.ACTION_SCREEN_OFF.equalsIgnoreCase(intent.getAction())) { //screen has been switched off! } } } 

Затем вам просто нужно зарегистрировать его, и вы начнете получать события, когда экран выключен:

 IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON); filter.addAction(Intent.ACTION_SCREEN_OFF); appBroadcastReceiver = new AppBroadcastReceiver(yourActivity); registerReceiver(appBroadcastReceiver, filter); 

Существует лучший способ:

 KeyguardManager myKM = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE); if( myKM.inKeyguardRestrictedInputMode()) { //it is locked } else { //it is not locked } 

В дополнение к вышеуказанному ответу, в случае, если вы хотите вызвать некоторые действия, когда ваше приложение находится на переднем плане :

Вы можете использовать событие, называемое onResume (), чтобы инициировать вашу собственную функцию, когда ваше приложение захватывает центр внимания из ранее остающегося состояния, т. Е. Если ваше приложение было в фоновом режиме (приостановлено / сведено к минимуму …)

 protected void onResume() { super.onResume(); //call user-defined function here }