Android开发实现消除屏幕锁的方法
2017-09-28 12:15
239 查看
实现屏幕无锁--->当我们开机或者超过锁屏幕时间或按电源键之后屏幕没有锁的一种状态。
经过查询许多资料以及分析代码,我们可以发现最主要的屏幕功能还是在framework/base/policy/src/com/android/internal/policy/impl/KeyguardViewMediator.java中。
里面有一个handleshow方法:
真正的去锁屏实现有一个 handlehide方法,真正的去隐藏锁屏实现 handleshow方法:
private void handleShow() { synchronized (KeyguardViewMediator.this) { if (DEBUG) Log.d(TAG, "handleShow"); if (!mSystemReady) return; playSounds(true); mKeyguardViewManager.show(); // 显示锁屏界面对应的窗口 mShowing = true; // 锁屏状态 , 即显示锁屏 adjustUserActivityLocked(); // 取消对用户Activity的控制 adjustStatusBarLocked(); //取消对状态栏的控制 try { ActivityManagerNative.getDefault().closeSystemDialogs("lock"); } catch (RemoteException e) { } mShowKeyguardWakeLock.release(); } }
我们只要将上面注释了的语句注释掉,那么就执行的空的,那样就取消真正的去锁屏实现
同理handlehide方法也只要注释
mKeyguardViewManager.hide(); mShowing = false; adjustUserActivityLocked(); AdjustStatusBarLocked()
就可以取消真正的去隐藏锁屏实现。
但是做完以上后仍存在一个Bug(问题),就是唤醒屏幕后,会在指定的时间内屏幕由亮变暗,我们还需要做如下修改:按下POWER键时,解除屏幕由亮变暗的Bug。
在
handleWakeWhenReady(int keyCode)方法下注释掉
pokeWakelock(); //按下POWER键时, 解除屏幕由亮变暗的Bug
就可以达到效果了。
最后还有一种方法就是在KeyguardViewMediator.java中有一个变量mExternallyEnabled,只要将其初始改为false,需要显示界面(
doKeyguard())时都不会继续走下去,也可以达到效果。
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。
您可能感兴趣的文章:
相关文章推荐
- Swing中让frame置于屏幕中央的实现方法,及添加图标
- JavaScript消除与函数名紧密耦合的递归实现方法
- 如何消除vc屏幕闪烁的方法
- 双缓冲原理在awt和swing中实现消除闪烁的方法
- 截取屏幕的实现方法
- Android Toast 设置到屏幕中间,自定义Toast的实现方法,及其说明
- 屏幕取词的实现方法(Windows 9x)
- 通过RandomAccessFile实现MyRandomAccessFile.readLine()方法--消除乱码
- C++实现屏幕截图的方法
- Android自适应屏幕的实现方法
- android 设备管理屏幕锁定实现方法
- Android Toast 设置到屏幕中间,自定义Toast的实现方法,及其说明
- 安卓监听屏幕的横竖翻转实现方法
- Android Toast 设置到屏幕中间,自定义Toast的实现方法,及其说明
- Android开发入门 Button事件实现的方法(原创)
- WinCE 实现屏幕旋转的方法
- 屏幕增强的实现方法
- WinCE实现屏幕旋转方法
- 如何消除vc编程界面屏幕闪烁的方法