實現屏幕無鎖--->當我們開機或者超過鎖屏幕時間或按電源鍵之後屏幕沒有鎖的一種狀態。
經過查詢許多資料以及分析代碼,我們可以發現最主要的屏幕功能還是在
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())時都不會繼續走下去,也可以達到效果。
更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11