界面刷新到屏幕上,需要喚醒CPU來處理畫圖的計算,還要喚醒屏幕的刷新動作,才能夠將新的畫面數(shù)據(jù)更新,但這個過程不能使得屏幕亮起來,否則用戶就會看到屏幕黑了又亮的閃爍問題。
[0042]還需要說明的是,整個過程的控制要在鎖屏流程中來做,因為本發(fā)明主要是保證鎖屏界面能夠完整刷新,所以需要鎖屏來調用CPU的喚醒和屏幕的喚醒動作。這個設計方法主要是在手機正常睡眠后執(zhí)行,目的只有一個不影響Android原始的流程設計,這樣做的一個好處是維持了原始設計的穩(wěn)定性,而且不影響第三方鎖屏應用和移動終端系統(tǒng)的兼容性。本發(fā)明的設計完全是在平臺自帶的鎖屏流程上增加一個功能,如果移動終端安裝了其他鎖屏應用,與平臺的鎖屏流程沒有任何沖突。
[0043]為了實現(xiàn)上述實施例,本發(fā)明還提出一種移動終端的鎖屏控制裝置。
[0044]圖4是根據(jù)本發(fā)明一個實施例的移動終端的鎖屏控制裝置的結構示意圖。需要說明的是,在本發(fā)明的實施例中,移動終端可以是手機、平板電腦等具有Android操作系統(tǒng)的硬件設備。
[0045]如圖4所示,該移動終端的鎖屏控制裝置可以包括:電源管理模塊10、手機窗口管理模塊20和鎖屏模塊30。
[0046]具體地,電源管理模塊10可用于接收鎖屏指令,并通過手機窗口管理模塊20關閉移動終端的屏幕,并通過手機窗口管理模塊20調用鎖屏模塊的屏幕關閉動作接口,以及關閉屏幕的燈光及屏幕的更新。
[0047]更具體地,電源管理模塊10可通過手機窗口管理模塊20對用戶針對移動終端的按鍵操作進行監(jiān)聽,當手機窗口管理模塊20檢測到用戶按下移動終端的電源鍵進行鎖屏時,手機窗口管理模塊20可將該檢測信息發(fā)送至電源管理模塊10,電源管理模塊10在接收到鎖屏指令之后,可啟動電源管理模塊10中的手機睡眠流程方法(sendGoToSleepBroadcast O),在該手機睡眠流程方法中,電源管理模塊10可先調用電源管理模塊10中的設備睡眠控制接口(goingToSleep O)和手機窗口管理模塊20中的屏幕關閉流程接口(screenTurnedOff ()),之后可通過手機窗口管理模塊20中的屏幕關閉流程接口(screenTurnedOff ())關閉移動終端的屏幕,并可通過手機窗口管理模塊20調用鎖屏模塊(KeyguardViewMediator)中的屏幕關閉動作接口(onScreenTurnedOff O),之后可通過設備睡眠控制接口(goingToSleep O)關閉屏幕的燈光及屏幕的更新。其中,在本發(fā)明的實施例中,電源管理模塊10在通過屏幕關閉流程接口(screenTurnedOff O)關閉移動終端的屏幕的同時,還可通過設備睡眠控制接口(goingToSle印O)對移動終端的外圍設備進行關閉,例如藍牙、W1-F1、耳機等。
[0048]鎖屏模塊30可用于創(chuàng)建鎖屏界面,并分別向電源管理模塊10發(fā)送第一次申請CPU喚醒的鎖和第二次申請CPU喚醒的鎖,并在第一次申請CPU喚醒的鎖的喚醒期間創(chuàng)建鎖屏界面,在第二次申請CPU喚醒的鎖的喚醒期間在屏幕中刷新鎖屏界面,以及分別向電源管理模塊10發(fā)送第一次釋放CPU喚醒的鎖和第二次釋放CPU喚醒的鎖。
[0049]進一步的,在本發(fā)明的一個實施例中,電源管理模塊10還可用于在接收鎖屏模塊30發(fā)送的第一次申請CPU喚醒的鎖之后,根據(jù)第一次申請CPU喚醒的鎖喚醒CPU,并保持屏幕的LED燈關閉。由此,通過第一次申請CPU喚醒的鎖使得CPU保持喚醒狀態(tài)以完成后續(xù)的鎖屏過程,同時保持屏幕的LED燈關閉以保證移動終端的屏幕處于關閉狀態(tài)。
[0050]可以理解,在本發(fā)明的實施例中,當電源管理模塊10接收到鎖屏模塊30發(fā)送的第二次申請CPU喚醒的鎖時,電源管理模塊10可根據(jù)第二次申請CPU喚醒的鎖再次向CPU申請一個鎖,并同樣保持屏幕的LED燈關閉。也就是說,鎖屏模塊30分別向電源管理模塊10發(fā)送了兩次申請CPU喚醒的鎖的請求,電源管理模塊10可根據(jù)這兩次請求申請兩個CPU的鎖以便鎖屏模塊30進行不同的操作。
[0051]更具體地,鎖屏模塊30可在第一次申請CPU喚醒的鎖的喚醒期間,啟動一個單獨的線程(handleShowO)通過鎖屏界面創(chuàng)建方法(maybeCreateKeyguardLockedO)以創(chuàng)建鎖屏界面,鎖屏模塊30在第二次申請CPU喚醒的鎖的喚醒期間,可將鎖屏界面刷新到屏幕中以使得鎖屏界面在移動終端睡眠之前能夠完整的顯示在屏幕上。更具體地,鎖屏模塊30在第二次申請CPU喚醒的鎖的喚醒期間,可先喚醒屏幕,其中這個喚醒只是針對屏幕刷新功能的喚醒,之后可針對鎖屏界面開始進行刷新動作,并通過CPU計算鎖屏界面的刷新數(shù)據(jù)。
[0052]在本發(fā)明的實施例中,鎖屏模塊30可具體用于:向電源管理模塊10發(fā)送第一次釋放CPU喚醒的鎖;以及在延遲預設時間之后,向電源管理模塊10發(fā)送第二次釋放CPU喚醒的鎖。具體而言,在本發(fā)明的實施例中,鎖屏模塊30可具體用于:在等待鎖屏界面在屏幕中的刷新過程完成之后向電源管理模塊10發(fā)送第二次釋放CPU喚醒的鎖。更具體地,在鎖屏模塊30在第一次申請CPU喚醒的鎖的喚醒期間完成了鎖屏界面的創(chuàng)建時,鎖屏模塊30可向電源管理模塊10發(fā)送第一次釋放CPU喚醒的鎖,以使電源管理模塊10釋放該鎖。在鎖屏模塊30在第二次申請CPU喚醒的鎖的喚醒期間完成了在屏幕中刷新鎖屏界面時,鎖屏模塊30可向電源管理模塊10發(fā)送第二次釋放CPU喚醒的鎖,并結束鎖屏界面的刷新動作,以使電源管理模塊10釋放該鎖,此時CPU即可進入睡眠而不再處于喚醒狀態(tài)。
[0053]需要說明的是,在本發(fā)明的實施例中,鎖屏模塊30在針對鎖屏界面進行刷新動作時,這個期間需要等待過程。其中,在本發(fā)明的實施例中,該等待鎖屏界面在屏幕中的刷新過程可通過延遲一定時間來實現(xiàn)。應當理解,延遲時間(即預設時間)的長短可由人為預先預定,由于不同的移動終端屏幕刷新速率會不一樣,刷新速率不一樣,則延遲的時間也就不同,所以可根據(jù)不同的移動終端設定不同的延遲時間。
[0054]在本發(fā)明的一個實施例中,可通過等待鎖屏界面在屏幕中的刷新過程waitForKeyguardDrawn O來確定在屏幕上刷新鎖屏界面的這個期間所需等待的時長。具體而言,在本發(fā)明的實施例中,鎖屏模塊30可具體用于:在等待過程waitForKeyguardDrawn O完成之后向電源管理模塊10發(fā)送第二次釋放CPU喚醒的鎖。其中,在本發(fā)明的實施例中,等待鎖屏界面在屏幕中的刷新過程waitForKeyguardDrawn O用于檢測屏幕數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)是否變化,如果屏幕數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)未變化,則向電源管理模塊10發(fā)送第二次釋放CPU喚醒的鎖。由此,可通過等待鎖屏界面在屏幕中的刷新過程waitForKeyguardDrawn O檢測屏幕數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)以確定等待的時長。
[0055]在本發(fā)明的實施例中,電源管理模塊10還可用于在釋放CPU喚醒的鎖之后,關閉CPU。更具體地,當鎖屏界面在黑屏的時候創(chuàng)建完成并刷新到屏幕上后,電源管理模塊10可釋放兩次的CPU喚醒的鎖,并關閉CPU以使其進入睡眠狀態(tài)。
[0056]根據(jù)本發(fā)明實施例的移動終端的鎖屏控制裝置,通過電源管理模塊在接收鎖屏指令之后,可先通過手機窗口管理模塊關閉移動終端的屏幕,并通過手機窗口管理模塊調用鎖屏模塊的屏幕關閉動作接口,之后,可關閉屏幕的燈光及屏幕的更新,且鎖屏模塊創(chuàng)建鎖屏界面,鎖屏模塊分別向電源管理模塊發(fā)送第一次申請CPU喚醒的鎖和第二次申請CPU喚醒的鎖,并在第一次申請CPU喚醒的鎖的喚醒期間創(chuàng)建鎖屏界面,在第二次申請CPU喚醒的鎖的喚醒期間在所述屏幕中刷新所述鎖屏界面,以及在鎖屏界面創(chuàng)建完成之后向電源管理模塊發(fā)送第一次釋放CPU喚醒的鎖,在鎖屏界面刷新到屏幕上之后向電源管理模塊發(fā)送第二次釋放CPU喚醒的鎖,電源管理模塊在釋放CPU喚醒的鎖之后,關閉CPU,從而使得移動終端進入睡眠狀態(tài),在整個鎖屏過程中,通過將鎖屏界面在移動終端睡眠前能夠完整的刷新在屏幕上,使得用戶點亮移動終端屏幕的第一時間即可看到鎖屏界面,給用戶帶來了更好的體驗,且降低了閃屏的風險,并且對于一些特殊的移動終端需求,例如屏幕具有半亮模式,能夠實現(xiàn)移動終端屏幕在半亮模式時也能正常顯示鎖屏界面。
[0057]在本說明書的描述中,參考術語“一個實施例”、“一些實施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結合該實施例或示例描述的具體特征、結構、材料或者特點包含于本發(fā)明的至少一個實施例或示例中。在本說明書中,對上述術語的示意性表述不