Bouncer
KeyguardBouncer is the component responsible for displaying the security method set by the user (password, PIN, pattern) as well as SIM-related security methods, allowing the user to unlock the device or SIM.
![ss-bouncer](data:image/png;base64,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//a05/cDE+1ygYBgcDgAAA39aVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA0LjQuMC1FeGl2MiI+CiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiCiAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgICB4bWxuczpHSU1QPSJodHRwOi8vd3d3LmdpbXAub3JnL3htcC8iCiAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgeG1wTU06RG9jdW1lbnRJRD0iZ2ltcDpkb2NpZDpnaW1wOjQ3ODdjNTI3LWQyOGEtNDQ1MS1hYWIzLTNjN2E4NDNiZjI3NCIKICAgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNzlhNzM4NC1kYTEzLTQzYjQtYTc2NC1jNTQ2NzcyZmM1OTIiCiAgIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpiNTBiMzc0My0zYmI2LTQ5YmUtODUxOS01ZTkyMzdhZTYxZGMiCiAgIGRjOkZvcm1hdD0iaW1hZ2UvcG5nIgogICBHSU1QOkFQST0iMi4wIgogICBHSU1QOlBsYXRmb3JtPSJMaW51eCIKICAgR0lNUDpUaW1lU3RhbXA9IjE2NDkwOTg5MjMyMDg5ODkiCiAgIEdJTVA6VmVyc2lvbj0iMi4xMC4zMCIKICAgdGlmZjpPcmllbnRhdGlvbj0iMSIKICAgeG1wOkNyZWF0b3JUb29sPSJHSU1QIDIuMTAiPgogICA8eG1wTU06SGlzdG9yeT4KICAgIDxyZGY6U2VxPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJzYXZlZCIKICAgICAgc3RFdnQ6Y2hhbmdlZD0iLyIKICAgICAgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpkN2U5YjUzYi0wN2U1LTQ3OGMtODc2ZC00ZDgzMGJmNmQ0N2EiCiAgICAgIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkdpbXAgMi4xMCAoTGludXgpIgogICAgICBzdEV2dDp3aGVuPSIyMDIyLTA0LTA0VDE4OjUyOjAyKzAwOjAwIi8+CiAgICAgPHJkZjpsaQogICAgICBzdEV2dDphY3Rpb249InNhdmVkIgogICAgICBzdEV2dDpjaGFuZ2VkPSIvIgogICAgICBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjQxMmFiNGI1LTliNjgtNDkzZC05ZDY2LTlmZTMyOGNjNGUyMiIKICAgICAgc3RFdnQ6c29mdHdhcmVBZ2VudD0iR2ltcCAyLjEwIChMaW51eCkiCiAgICAgIHN0RXZ0OndoZW49IjIwMjItMDQtMDRUMTk6MDI6MDMrMDA6MDAiLz4KICAgIDwvcmRmOlNlcT4KICAgPC94bXBNTTpIaXN0b3J5PgogIDwvcmRmOkRlc2NyaXB0aW9uPgogPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3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)
Supported States
- Phone, portrait mode - The default and typically only way to view the bouncer. Screen cannot rotate.
- Phone, landscape - Can only get into this state via lockscreen activities. Launch camera, rotate to landscape, tap lock icon is one example.
- Foldables - Both landscape and portrait are supported. In landscape, the bouncer can appear on either of the hinge and can be dragged to the other side. Also refered to as "OneHandedMode in KeyguardSecurityContainerController
- Tablets - The bouncer is supplemented with user icons and a multi-user switcher, when available.
Components
The bouncer contains a hierarchy of controllers/views to render the user's security method and to manage the authentication attempts.
- KeyguardBouncer - Entrypoint for managing the bouncer visibility.
- KeyguardHostViewController - Intercepts media keys. Can most likely be merged with the next item.
- KeyguardSecurityContainerController - Manages unlock attempt responses, determines the correct security view layout, which may include a user switcher or enable one-handed use.
- KeyguardSecurityViewFlipperController - Based upon the KeyguardSecurityModel#SecurityMode, will instantiate the required view and controller. PIN, Pattern, etc.
Fun fact: Naming comes from the concept of a bouncer at a bar or nightclub, who prevent troublemakers from entering or eject them from the premises.