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
手機窗體管理。