现在的位置: 首页 > 综合 > 正文

android消除屏幕锁

2014年10月30日 ⁄ 综合 ⁄ 共 1274字 ⁄ 字号 评论关闭

实现屏幕无锁--->当我们开机或者超过锁屏幕时间或按电源键之后屏幕没有锁

的一种状态。

      经过查询许多资料以及分析代码,我们可以发现最主要的屏幕功能还是在

framework/base/policy/src/com/android/internal/policy/impl/KeyguardViewMediator.java中。

里面有一个handleshow方法: 真正的去锁屏实现

 有一个 handlehide方法:真正的去隐藏锁屏实现

1 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();  
    }  
}  
我们只要将上面注释了的语句注释掉,那么就执行的空的,那样就取消真正的去锁屏实现
                 
2 同理handlehide方法也只要注释mKeyguardViewManager.hide();  
        mShowing = false;   
        adjustUserActivityLocked();         
        AdjustStatusBarLocked()
就可以取消真正的去隐藏锁屏实现。

但是做完以上后仍存在一个Bug(问题),就是唤醒屏幕后,会在指定的时间内屏幕由亮变暗,我们还需要做如下修改:按下POWER键时,解除屏幕由亮变暗的Bug。

在handleWakeWhenReady(int keyCode)方法下注释掉
pokeWakelock();  //按下POWER键时, 解除屏幕由亮变暗的Bug     
就可以达到效果了。

最后还有一种方法就是在KeyguardViewMediator.java中有一个变量mExternallyEnabled,只要将其初始改为false,需要显示界面(doKeyguard())时都不会继续走下去,也可以达到效果。

抱歉!评论已关闭.