Как выявить, что экран заблокирован? - PullRequest
9 голосов
/ 31 мая 2011

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

Ответы [ 3 ]

5 голосов
/ 31 мая 2011

Вы должны расширить 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);
3 голосов
/ 29 декабря 2011

Есть лучший способ:

KeyguardManager myKM = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);
if( myKM.inKeyguardRestrictedInputMode()) {
 //it is locked
} else {
 //it is not locked
}
0 голосов
/ 31 мая 2011

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

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

protected void onResume()
{
    super.onResume();

    //call user-defined function here
}
...