現在的位置: 首頁 > 綜合 > 正文

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())時都不會繼續走下去,也可以達到效果。

抱歉!評論已關閉.