码迷,mamicode.com
首页 > 移动开发 > 详细

洞悉Android Keyguard

时间:2018-08-12 00:32:52      阅读:488      评论:0      收藏:0      [点我收藏+]

标签:not   pattern   表示   inf   修改   androi   bar   statusbar   安全   

      Android Keyguard自Android L以来一直没有多大变化。在Android L之前, Keyguard有自己独立的进程,KeyguardService自开机时启动并常驻。Android L之后到Android P,Keyguard和SystemUI共同享有一个进程。process id为com.android.systemui, Keyguard可以看做是SystemUI的一个lib库。可表示为如下:

                           技术分享图片

Keyguard架构有较大变化,同时Keyguard UI界面也有很大变化, 包含两个主界面,一个是显示Notification的主界面,称为Notification Keyguard, 另一个是在系统锁屏方式为安全锁时用来用户输入密码解锁的界面,称为Bouncer界面。如下图所示(下面左图为Notification Keyguard界面, 上滑之后进入第二个界面,即Bouncer界面)。

                                              技术分享图片                                        技术分享图片

        一、System boot Create Keyguard Flow

        KeyguardService在System boot ready时开始bind, 同时会根据用户设置的锁屏方式去create对应keyguard, 锁屏方式可以分为None(无,即没有锁屏), Swipe(滑动,即滑动解锁),Pattern(图案,输入图案解锁,密码长度至少连接四个点), Password(密码,输入密码解锁,密码由数字和字母组合组成,密码长度至少为4),PIN(PIN, 密码只包含数字, 密码长度至少为4)。System boot时create keyguard flow如下:

 技术分享图片

 

技术分享图片

技术分享图片

技术分享图片

 

 技术分享图片

 下面log是对应flow的关键log, 可以从log check create flow跑到了哪个阶段,可以迅速的debug出问题。

技术分享图片

 

      二、系统灭屏时Create Keyguard Flow

      在系统灭屏时,也会去create keyguard, 默认在power key灭屏之后会去立即create keyguard, 但如果没有勾选"power key立即锁屏",或者是timeout灭屏(即系统无操作,隔一段时间后自动熄屏),则默认会在灭屏之后隔5s才去create keyguard. 灭屏去create keyguard的flow与boot 时去create keyguard flow差不多,只是触发条件不同而已,如下:

 技术分享图片

技术分享图片

 下面log是对应灭屏create keyguard flow的关键log。

技术分享图片

 

      三、Power Key亮屏Flow

      在系统亮屏时,会等keyguard画好之后再亮屏(如果user有设置keyguard的话),即亮屏时会被keyguard block住,等keyguard画完之后会通知PowerManagerService去亮屏。亮屏flow相对简单,如下:

     技术分享图片

 

技术分享图片

  下面log是对应power key亮屏 flow的关键log。

 技术分享图片

 

      四、Dismiss Keyguard Flow

      然后除了create keyguard外,另一重要的flow就是解锁了,用户滑动或者输入密码之后会去解锁。由于Keyguard和SystemUI同属一个进程,并与StatusBar共用一个window的关系,解锁flow比前面稍微复杂一点。下面是以pattern锁为例解锁flow图:

    技术分享图片

技术分享图片

技术分享图片

   下面log是对应pattern锁屏解锁 flow的关键log。

 技术分享图片

 

      至此,Keyguard几个重要的flow都已介绍完毕,除了常规的锁屏方式外,Android也支持人脸解锁,语音解锁,指纹解锁。这些生物识别的解锁方式也是需要Keyguard的配合才能完成,Android厂商如要开发自己的Keyguard, 不使用Android default Keyguard, 在接入这些生物识别的解锁方式时,需要做一些修改来和自己的Keyguard适配。Hardware -> kernel -> HAL -> framework -> keyguard.

 

洞悉Android Keyguard

标签:not   pattern   表示   inf   修改   androi   bar   statusbar   安全   

原文地址:https://www.cnblogs.com/android-rui/p/9461527.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!