Как определить был ли заблокирован экран в android приложении?
Использую Android Studio, нужно делать определённые действия в приложении при блокировки экрана. Находил решения тут же на stackoverflow, но они старые. Те методы которые использовались ранее, сейчас android studio перечеркивает.
В общем, условно нужно свести код к проверке: если экран потушили кнопкой питания(т.е. заблокирован), то делать что-то там.
Ответы (3 шт):
Вот есть способ:
KeyguardManager myKM = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);
if( myKM.inKeyguardRestrictedInputMode()) {
//it is locked
} else {
//it is not locked
}
Так вот подобные вопросы 1, 2 и 3.
UPDATE
Если метод устарел, то из документации можно взять другой:
Returns whether the device is currently locked and requires a PIN, pattern or password to unlock.
Надо воспользоваться бродкастом, который рассылается системой при выключении экрана, примерно так:
public class ScreenStateBroadcastReceiver extends BroadcastReceiver {
public ScreenStateBroadcastReceiver() {
}
@Override
public void onReceive(Context context, Intent intent) {
//checking has screen been switched off?
if (Intent.ACTION_SCREEN_OFF.equalsIgnoreCase(intent.getAction())) {
//blah-blah
//что-то делаем здесь
}
}
}
Не забудьте продекларировать ресивер с манифесте ну или можно в коде его тоже зарегистрировать.
Мне лично помогло вот такое решение, которое использовал в onPause методе.
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
boolean isScreenOn = pm.isInteractive();
if(!isScreenOn){
//...
}