Android的唤醒锁和键盘锁

概述

Android中有两把锁WalkLock和KeyguardLock:

  • WalkLock - 即唤醒锁,用来点亮屏幕的
  • KeyguardLock - 即键盘锁,用来解锁键盘的

WalkLock 唤醒锁

WalkLock可以用来点亮屏幕。

获得唤醒锁

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK|PowerManager.ACQUIRE_CAUSES_WAKEUP, "Gank");

参数说明:

  • PowerManager.FULL_WAKE_LOCK 指定手机点亮的程度
  • PowerManager.ACQUIRE_CAUSES_WAKEUP WalkLock点亮屏幕并非真的去点亮了屏幕,可以理解为,它通过Android组件(Activity)去点亮了屏幕。如果一个通知想去点亮屏幕,那 是不行的,但是如果设置了PowerManager.ACQUIRE_CAUSES_WAKEU这个参数,就可以点亮屏幕了。它使WalkLock不再依 赖组件就可以点亮屏幕。

获得屏幕当前的状态

boolean state=wl.isScreenOn();//返回true时屏幕是唤醒的,返回false时屏幕是休眠的。

唤醒和休眠

wl.aquire();  //在屏幕休眠的状态下唤醒屏幕
wl.release(); //在屏幕点亮的状态下,使屏幕休眠。

说明:
wl.release()这个方法有个需要注意的地方:如果wl先唤醒了屏幕再使屏幕休眠没有问题;如果屏幕本身就是唤醒状态,wl没有唤醒过屏幕,这时wl如果尝试使屏幕休眠,会产生一个UnLock Sreen异常。

KeyguardLock 键盘锁

获得键盘锁

KeyguardManager km = (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE);
KeyguardLock kl = km.newKeyguardLock("KUnLock");

获得键盘锁状态

boolean state = km.inKeyguardRestrictedInputMode(); //返回true表示键盘锁住,返回false表示键盘未解锁

解锁和上锁

kl.disableKeyguard();  //解锁键盘
kl.reenableKeyguard(); //锁键盘

说明:

  • KeyguardLock没有唤醒锁上面的问题,即无论键盘是否由kl解锁,调用kl的reenableKeyguard()方法都不会有异常。

若果程序获得了一个键盘锁对象,并不能保证锁住屏幕。因为本程序锁不了其他程序打开的屏幕(如果可以的话,一个for循环就能永远住屏幕了)。所以只可以控制自己的锁,无法控制别人的锁。

总结

一般两把锁都是配合使用的,解锁键盘的时候一般都需要点亮屏幕;锁键盘时一般也希望屏幕同时休眠。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值