Role in SystemUI
Function I Layout
Function II Data
Function III Widget
Customize Network Signal
Customize Shake to Unlock
Other
事件源
电源管理事件,影响到锁屏显示或者重置
手机窗口管理员回调,锁屏显示的时候,用这个回调通知手机窗口管理员锁屏显示了
锁屏视图自己的事件,追踪锁屏成功解锁的状态
设计
当屏幕暗下去的时候,锁屏视图显示,这么设计的目的是当屏幕变亮时,锁屏立刻准备好了。
考虑以下场景:
- 运动,按键是否应该唤醒锁屏
- 锁屏是否显示?
- 输入事件是否收锁屏状态的限制
外部事件转换为锁屏视图变化:
关闭屏幕:重置锁屏,显示锁屏(为下一次屏幕打开准备)
键盘滑开:如果屏锁不安全,隐藏屏锁
锁屏视图的事件:
用户成功解锁锁屏:隐藏锁屏,不再限制输入事件
外部的应用和服务可以通过接口设置锁屏功能不起作用,这个设置会覆盖所有启动锁屏的条件。
线程安全:
在UI线程创建锁屏的UI,被其他线程调用的api需要加synchronized,锁屏UI的action发送到UI线程的Handler
PowerManager.WakeLock 也称作唤醒锁, 是一种保持 CPU 运转防止设备休眠的方式.
UI
模式 | 布局 | 视图 |
---|---|---|
Pattern | R.layout.keyguard_pattern_view | KeyguardPatternView, LockPatternView |
PIN | R.layout.keyguard_pin_view | KeyguardPINView, AlphaOptimizedRelativeLayout, PasswordTextView, NumPadKey, AlphaOptimizedImageButton |
Password | R.layout.keyguard_password_view | KeyguardPasswordView |
SimPin | R.layout.keyguard_sim_pin_view | KeyguardSimPinView, PasswordTextView, NumPadKey |
SimPuk | R.layout.keyguard_sim_puk_view | KeyguardSimPukView, PasswordTextView, NumPadKey |