Поработав некоторое время, я обнаружил, что лучший способ сделать это - зарегистрировать BroadcastReceiver в действии "android.intent.action.USER_PRESENT".
"Broadcast Action: Отправляется, когда пользователь присутствует после пробуждения устройства (например, когда пропала клавиатура)."
Чтобы различать случаи, когда пользователь включал свой экран, когда он не был заблокирован, когда он фактически разблокировал его, используйте KeyguardManager для проверки настроек безопасности.
Пример кода:
Добавьте это к вашей деятельности:
registerReceiver(new PhoneUnlockedReceiver(), new IntentFilter("android.intent.action.USER_PRESENT"));
Тогда используйте этот класс:
public class PhoneUnlockedReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
KeyguardManager keyguardManager = (KeyguardManager)context.getSystemService(Context.KEYGUARD_SERVICE);
if (keyguardManager.isKeyguardSecure()) {
//phone was unlocked, do stuff here
}
}
}