概述

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循环就能永远住屏幕了)。所以只可以控制自己的锁,无法控制别人的锁。

总结

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

更多相关文章

  1. Android中屏幕密度和图片大小的关系分析
  2. Android(安卓)Screen Monitor使用
  3. 去掉android的屏幕上的title bar
  4. 在屏幕上方是actionBar tab的ViewPager页面里面嵌套子tab并显示
  5. Android中文API(146) —— Display
  6. Android的四大天王
  7. Android修行之路——Android程序设计基础(一)
  8. Android中屏幕密度和图片大小的关系分析
  9. 屏幕锁知识点

随机推荐

  1. Android 应用安全开发总结
  2. Android —— 静态AsyncTask解决内存泄漏
  3. Jetpack插件化学习之AndroidX--Android项
  4. Android签名机制之---签名验证过程详解
  5. 【Android(安卓)界面效果11】android 瀑
  6. Android学习day01
  7. Android 判断应用 第一次安装启动
  8. 关于Android(安卓)添加系统级(java)服务
  9. android studio手机连接本地服务器测试
  10. 澄迈NIIT Android 实训 后5天学习android