洞悉Android Keyguard

來源:互聯網
上載者:User

標籤: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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.