如何检查屏幕是否已解锁(E.i.开启而不是锁定屏幕)?
PS。我不是在寻找解锁事件,我知道可以使用AdminDeviceReceiver检索它,但我正在寻找一个可执行代码,它将返回一个布尔值,告诉我屏幕是否已解锁。
答案 0 :(得分:12)
试试这个:
KeyguardManager myKM = (KeyguardManager) сontext.getSystemService(Context.KEYGUARD_SERVICE);
if( myKM.inKeyguardRestrictedInputMode() ) {
// it is locked
} else {
//it is not locked
}
答案 1 :(得分:4)
KeyguardManager keyguardManager = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);
if( keyguardManager.inKeyguardRestrictedInputMode()) {
System.out.println("~~~SCREEN LOCKED~~~");
} else {
System.out.println("~~~SCREEN NOT LOCKED~~~");
}
答案 2 :(得分:1)
使用Power Manager检查onPause方法中的屏幕关闭状态
@Override
protected void onPause()
{
super.onPause();
// If the screen is off then the device has been locked
PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
boolean isScreenOn = powerManager.isScreenOn();
if (!isScreenOn) {
// The screen has been locked
// do stuff...
}
}
答案 3 :(得分:1)
!mKeyguardManager.isDeviceLocked()
答案 4 :(得分:0)
根据Google文档inKeyguardRestrictedInputMode
已弃用。代替您可以使用以下方法唤醒电话或不唤醒电话。
private boolean isPhoneIsLockedOrNot(Context context) {
boolean isPhoneLock = false;
if (context != null) {
KeyguardManager myKM = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);
if (myKM != null && myKM.isKeyguardLocked()) {
isPhoneLock = true;
}
}
return isPhoneLock;
}