最近因為專案需求研究了一下Android LockScreen相關部分的類別,花了不少時間,但類別圖一畫出來便就豁然開朗。如下圖
整個LockScreen我把它分成5大部分,此處數字請與圖配合食用。
- SecuritySettings為在setting app介面的顯示部分。它會用到LockPatternUtils來讀取現在Lock的類型。
- LockPatternUtils為紀錄所有Lock相關資訊的類別,包含密碼正確判斷,密碼檔存放,Lock類型等。
- 這部分包含幾個類別,這些類別都是負責顯示的部分。其中最底下的3個類別,{PasswordUnlock,AccountUnlock,PatternUnlock}Screen,它們繼承了View類別,做真正顯示的部分。LockPatternKeyguardView以及用它的LockPatternKeyguardViewProperties會根據LockPatternUtils讀取到的Lock類型,來具現{PasswordUnlock,AccountUnlock,PatternUnlock}Screen。
- KeyguardViewMediator為大魔王,它將第3部分那些複雜的東西,統一成一個類別方便使用(即Design Pattern裡的Mediator),它主要用KeyguardView{Properties,Manager}
- 這部分就不用解說了,這是Android platform的部分。
相關修改LockScreen的APP
Market可看到的LockScreen修改程式有很多,像是WidgetLocker、Flyscreen、Nolock等等。若是反組譯其中之一大概都可以看到這樣的code。
KeyguardManager localKeyguardManager = (KeyguardManager)getSystemService("keyguard"); // enable lockscreen this.mKeyguardLock.reenableKeyguard(); // disable lockscreen this.mKeyguardLock.disableKeyguard();
一直往下追最後就可以從剛才類別圖的第5部分的最上方類別WindowManagerService內的方法disableKeyguard()等等。
有興趣的人再自己追追看囉~
No comments:
Post a Comment