本文實例講述了Android開發實現消除屏幕鎖的方法。分享給大家供大家參考,具體如下:
實現屏幕無鎖--->當我們開機或者超過鎖屏幕時間或按電源鍵之后屏幕沒有鎖的一種狀態。
經過查詢許多資料以及分析代碼,我們可以發現最主要的屏幕功能還是在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程序設計有所幫助。
新聞熱點
疑難解答