Android JellyBean Keyguard鎖屏

Android Keyguard 4.1 的鎖屏在/frameworks/base/policy/src/com/android/internal/policy/impl中,第一次全模塊的讀Framework,有很多都看不懂,希望大傢可以指教!

1.AccountUnlockScreen.java

   當用戶忘記他們密碼的時候就會調用這個函數使用他們的帳號密碼解鎖並且重置手機鎖,這裡面代碼很簡單就不細說瞭。最終判斷成功的方法為:postOnCheckPasswordResult();

 

2.BiometricSensorUnlock.java

    生物識別傳感器解鎖?不知道怎麼翻譯,這是一個接口,從名字上分析感覺是為瞭面部解鎖/指紋解鎖或其他跟生物體有關的解鎖方式預留的一個接口。

 

3.FaceUnlock.java

    面部解鎖, 其中有個佈爾變量叫mServiceRunning,說是為瞭判斷一個Service是否正在運行的。現在還不知道Service是什麼Service,可能是解鎖模塊後臺跑的主Service.代碼看到後面發現在start()的時候會綁定一個叫IFaceLockInterface的Service.IFaceLockInterface是一個aidl文件,我不知道這意味著什麼,可能是底層C/C++實現的一個Service?這個文件裡面大部分都是關於FaceUnlock View的邏輯處理,什麼顯示消失阿,並沒有看到面部解鎖的原理,不知道跑哪裡去瞭,很可能在那個Service中。但是那個Service是在哪裡呢?大大指導一下。

 

4.GlobalActions.java

    全局行為,這段代碼就是處理鎖屏界面長按Power鍵彈出的Dialog。關於靜音模式/飛行模式和關機的。

 

5.IconUtilities.java

    圖標工具,好像就是一個圖片處理的工具類,提供瞭一個drawable轉bitmap的方法,還有個繪制bitmap按下的方法

 

6.KeyguardScreen.java

    鍵盤鎖接口.

 

7.KeyguardScreenCallback.java

    鍵盤鎖界面回調.

 

 

8.KeyguardStatusViewManager.java

    鍵盤鎖狀態視圖管理,SIM卡狀態/電池狀態/鬧鈴/時鐘等等的管理

 

9.KeyguardUpdateMonitor.java

    鍵盤鎖更新監視器,該類的主要功能就是根據監視系統狀態值的改變(例如:時間、SIM卡狀態、電池電量;使用廣播監聽),根據這種狀態值的改變回調監聽瞭該狀態信息的對象實例。當其接收到狀態改變的廣播之後會通知KeyguardStatusViewManager修改界面上顯示的狀態。

 

10.KeyguardViewBase.java

    鍵盤鎖基礎視圖,為LockPatternKeyguardView提供瞭一組通用的方法 。需要值得註意的方法就是他對某些KeyEvent的監聽,當他消費監聽到這些KeyEvent,我們的App就監聽不到這些KeyEvent瞭 。常用的有KEYEVENT_VOLUME_UP/DOWN等。

 

11.KeyguardViewCallback.java

    鍵盤鎖視圖回調,提供瞭一些接口用來接受用戶操作Screen的結果。

 

12.KeyguardViewManager.java

    鍵盤鎖視圖管理,包裝瞭WindowManager功能瞭,提供瞭添加、刪除鎖屏界面的功能。

 

13.KeyguardViewMediator.java

    核心類 ,該類是唯一實現瞭KeyguardViewCallback的類。功能:該類提供瞭一些接口,由PhoneWindowManager)去訪問控制Keyguard….該類的初始化是在PolicyWindowManager的構造函數中創建的。按電源鍵之後就是通過該類處理鎖屏事件的。

 

14.KeyguardViewProperties.java

    鍵盤鎖屬性,提供瞭創建界面的通用方法。

 

15.KeyguardWindowController.java

    鍵盤鎖窗體控制者,提供通用接口,判斷該界面是否需要顯示輸入法窗口。

 

16.LockPatternKeyguardView.java

    圖形鍵盤鎖視圖,作為LockScreen和UnLockScreen界面的載體,控制顯示哪個界面。這裡有個疑問是無法看出來解鎖的Mode存儲方式,不知道是數據庫,還是xml還是別的什麼,不知道那位大大知道?

 

17.LockPatternKeyguardViewProperties.java

    感覺就是用來處理某些解鎖界面需要顯示鍵盤的。

 

18.LockScreen.java

    鎖屏界面,好吧,我沒有看懂。。。那個拖拽鎖的方法在那裡。。。?

 

19.PasswordUnlockScreen.java

    密碼解鎖界面,這段很簡單就不說瞭。

 

20.PatternUnlockScreen.java

    圖形解鎖界面。

 

21.PhoneFallbackEventHandler.java

    手機回退事件處理,這段代碼應該是鎖屏界面選擇的一些事件處理,比如拖動解鎖框至電話圖標就打開電話界面。

 

22.PhoneLayoutInflater.java

    手機佈局過濾,沒看明白。

 

23.PhoneWindow.java

    手機窗體。

 

24.PhoneWindowManager.java

    手機窗體管理。

 

 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。