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

手机窗体管理。