Как выявить, что экран заблокирован?
В моем приложении мне нужно знать, когда устройство заблокировано (в HTC это выглядит как короткое нажатие на кнопку "питание"). Таким образом, вопрос: какое событие запускается, когда устройство заблокировано? Или устройство собирается спать?
3 ответа
Вы должны продлить 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
}