如何检查屏幕是否解锁(即打开并非在锁屏状态)?
PS. 我不是在寻找解锁事件,我知道可以通过AdminDeviceReceiver获取该事件,但我正在寻找一个可执行的代码,它将返回一个布尔值,告诉我屏幕是否已解锁。
如何检查屏幕是否解锁(即打开并非在锁屏状态)?
PS. 我不是在寻找解锁事件,我知道可以通过AdminDeviceReceiver获取该事件,但我正在寻找一个可执行的代码,它将返回一个布尔值,告诉我屏幕是否已解锁。
试试这个:
KeyguardManager myKM = (KeyguardManager) сontext.getSystemService(Context.KEYGUARD_SERVICE);
if( myKM.inKeyguardRestrictedInputMode() ) {
// it is locked
} else {
//it is not locked
}
摘自:检测屏幕是否锁定
同样的答案也在这里:如何从服务中判断用户是否处于锁屏状态
KeyguardManager keyguardManager = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);
if( keyguardManager.inKeyguardRestrictedInputMode()) {
System.out.println("~~~SCREEN LOCKED~~~");
} else {
System.out.println("~~~SCREEN NOT LOCKED~~~");
}
!mKeyguardManager.isDeviceLocked()
@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...
}
}
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;
}