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
鍵盤鎖表單控制者,提供通用介面,判斷該介面是否需要顯示IME視窗。
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
手機表單管理。