1# Keyguard (aka Lockscreen)
2
3Keyguard is responsible for:
4
51. Handling authentication to allow the user to unlock the device, via biometrics or [KeyguardBouncer][1]
62. Displaying informational content such as the time, notifications, and smartspace
73. Always-on Display (AOD)
8
9Keyguard is the first screen available when turning on the device, as long as the user has not specified a security method of NONE.
10
11## Critical User Journeys
12
13The journeys below generally refer to Keyguard's portion of the overall flow, especially regarding use of the power button. Power button key interpretation (short press, long press, very long press, multi press) is done in [PhoneWindowManager][4], with calls to [PowerManagerService][2] to sleep or wake up, if needed.
14
15### Power On - AOD enabled or disabled
16
17Begins with the device in low power mode, with the display active for [AOD][3] or inactive. [PowerManagerService][2] can be directed to wake up on various user-configurable signals, such as lift to wake, screen taps, among others. [AOD][2], whether visibly enabled or not, handles these signals to transition AOD to full Lockscreen content. See more in [AOD][3].
18
19### Power Off
20
21An indication to power off the device most likely comes from one of two signals: the user presses the power button or the screen timeout has passed. This may [lock the device](#How-the-device-locks)
22
23#### Long-pressing on keyguard
24
25OEMs may choose to enable a long-press action that displays a button at the bottom of lockscreen. This button links to lockscreen customization. This can be achieved by overriding the `long_press_keyguard_customize_lockscreen_enabled` resource in `packages/SystemUI/res/values/config.xml`.
26
27#### On Lockscreen
28
29#### On Lockscreen, occluded by an activity
30
31#### Device unlocked, Keyguard has gone away
32
33### Pulsing (Incoming notifications while dozing)
34
35### How the device locks
36
37### Quick Affordances
38
39These are interactive UI elements that appear on the lockscreen when the device is locked. They allow the user to perform quick actions without unlocking their device. To learn more about them, please see [this dedicated document](quickaffordance.md)
40
41## Debugging Tips
42Enable verbose keyguard logs that will print to logcat. Should only be used temporarily for debugging. See [KeyguardConstants][5].
43```
44adb shell setprop log.tag.Keyguard DEBUG && adb shell am crash com.android.systemui
45```
46
47More coming
48* Screen timeout
49* Smart lock
50* Device policy
51* Power button instantly locks setting
52* Lock timeout after screen timeout setting
53
54
55[1]: /frameworks/base/packages/SystemUI/docs/device-entry/bouncer.md
56[2]: /com/android/server/power/PowerManagerService.java
57[3]: /frameworks/base/packages/SystemUI/docs/device-entry/doze.md
58[4]: /com/android/server/policy/PhoneWindowManager.java
59[5]: /frameworks/base/packages/SystemUI/src/com/android/keyguard/KeyguardConstants.java
60