本發(fā)明實(shí)施例屬于電子技術(shù)領(lǐng)域,尤其涉及一種終端及其顯示方法。
背景技術(shù):
隨著顯示技術(shù)的不斷普及,在多個(gè)屏幕上顯示數(shù)據(jù)以實(shí)現(xiàn)多屏互動(dòng)的需求越來(lái)越大。
然而,現(xiàn)有的終端或顯示設(shè)備,需要重新啟動(dòng)系統(tǒng)或者只有運(yùn)行終端或顯示設(shè)備生產(chǎn)廠家撰寫(xiě)的特定應(yīng)用,才能在兩個(gè)屏幕上共同顯示同一應(yīng)用的數(shù)據(jù),兼容性較差,無(wú)法實(shí)現(xiàn)任意應(yīng)用的雙屏合一顯示功能。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供一種終端及其顯示方法,可在無(wú)需重啟系統(tǒng)的前提下,把任意應(yīng)用的數(shù)據(jù)顯示到由兩個(gè)屏幕所合成的一個(gè)屏幕上,并且兼容性強(qiáng)可實(shí)現(xiàn)任意應(yīng)用的雙屏合一顯示功能。
本發(fā)明實(shí)施例一方面提供一種終端的顯示方法,所述安卓設(shè)備包括第一屏幕和第二屏幕,所述方法包括:
若桌面啟動(dòng)器檢測(cè)到雙屏合一指令,則觸發(fā)底層動(dòng)態(tài)卸載所述第一屏幕的第一驅(qū)動(dòng)和所述第二屏幕的第二驅(qū)動(dòng),加載驅(qū)動(dòng)所述第一屏幕和所述第二屏幕合成顯示為第三屏幕的第三驅(qū)動(dòng);
系統(tǒng)內(nèi)核通過(guò)顯示合成模塊、界面投遞服務(wù)和顯示管理服務(wù)向活動(dòng)管理服務(wù)發(fā)送通知;
所述活動(dòng)管理服務(wù)根據(jù)所述通知獲取預(yù)先保持的所述第一屏幕的活動(dòng)棧和所述第二屏幕的活動(dòng)棧,并將所述第一屏幕的活動(dòng)棧和所述第二屏幕的活動(dòng)棧合成為所述第三屏幕的活動(dòng)棧;
窗口管理服務(wù)根據(jù)所述第三屏幕的活動(dòng)棧生成所述第三屏幕的屏幕信息,并生成放置所述屏幕信息的任務(wù)棧;
窗口管理服務(wù)根據(jù)所述屏幕信息重新對(duì)所述第一屏幕和所述第二屏幕合成的第三屏幕進(jìn)行窗口化計(jì)算,以生成所述第三屏幕的顯示窗口;
界面投遞服務(wù)將所述第三屏幕的顯示窗口發(fā)送給與所述第三屏幕對(duì)應(yīng)的顯示合成模塊,以通過(guò)所述顯示合成模塊將所述顯示窗口合成顯示在所述第三屏幕。
本發(fā)明實(shí)施例另一方面還提供一種終端,所述終端包括第一屏幕和第二屏幕,所述終端包括:
觸發(fā)單元,用于若桌面啟動(dòng)器檢測(cè)到雙屏合一指令,則觸發(fā)底層動(dòng)態(tài)卸載所述第一屏幕的第一驅(qū)動(dòng)和所述第二屏幕的第二驅(qū)動(dòng),加載驅(qū)動(dòng)所述第一屏幕和所述第二屏幕合成顯示為第三屏幕的第三驅(qū)動(dòng);
通知單元,用于系統(tǒng)內(nèi)核通過(guò)顯示合成模塊、界面投遞服務(wù)和顯示管理服務(wù)向活動(dòng)管理服務(wù)發(fā)送通知;
活動(dòng)棧合成單元,用于所述活動(dòng)管理服務(wù)根據(jù)所述通知獲取預(yù)先保持的所述第一屏幕的活動(dòng)棧和所述第二屏幕的活動(dòng)棧,并將所述第一屏幕的活動(dòng)棧和所述第二屏幕的活動(dòng)棧合成為所述第三屏幕的活動(dòng)棧;
屏幕信息生成單元,用于窗口管理服務(wù)根據(jù)所述第三屏幕的活動(dòng)棧生成所述第三屏幕的屏幕信息,并生成放置所述屏幕信息的任務(wù)棧;
顯示窗口生成單元,用于窗口管理服務(wù)根據(jù)所述屏幕信息重新對(duì)所述第一屏幕和所述第二屏幕合成的第三屏幕進(jìn)行窗口化計(jì)算,以生成所述第三屏幕的顯示窗口;
合成顯示單元,用于界面投遞服務(wù)將所述第三屏幕的顯示窗口發(fā)送給與所述第三屏幕對(duì)應(yīng)的顯示合成模塊,以通過(guò)所述顯示合成模塊將所述顯示窗口合成顯示在所述第三屏幕。
本發(fā)明實(shí)施例通過(guò)提供一種終端及其顯示方法,可在無(wú)需重啟系統(tǒng)的前提下,把任意應(yīng)用的數(shù)據(jù)顯示到由兩個(gè)屏幕所合成的一個(gè)屏幕上,并且兼容性強(qiáng)可實(shí)現(xiàn)任意應(yīng)用的雙屏合一顯示功能,不需要更改安卓設(shè)備的硬件結(jié)構(gòu),易于實(shí)現(xiàn),適于廣泛推廣使用。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明實(shí)施例一提供的終端的顯示方法的基本流程框圖;
圖2是本發(fā)明實(shí)施例二提供的終端的顯示方法的基本流程框圖;
圖3是本發(fā)明實(shí)施例三提供的終端的結(jié)構(gòu)框圖;
圖4是本發(fā)明實(shí)施例四提供的終端的結(jié)構(gòu)框圖;
圖5是本發(fā)明實(shí)施例五提供的終端的結(jié)構(gòu)框圖。
具體實(shí)施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分的實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù)的范圍。
本發(fā)明的說(shuō)明書(shū)和權(quán)利要求書(shū)及上述附圖中的術(shù)語(yǔ)“包括”以及它們?nèi)魏巫冃危鈭D在于覆蓋不排他的包含。例如包含一系列步驟或單元的過(guò)程、方法或系統(tǒng)、產(chǎn)品或設(shè)備沒(méi)有限定于已列出的步驟或單元,而是可選地還包括沒(méi)有列出的步驟或單元,或可選地還包括對(duì)于這些過(guò)程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。此外,術(shù)語(yǔ)“第一”、“第二”和“第三”等是用于區(qū)別不同對(duì)象,而非用于描述特定順序。
本發(fā)明實(shí)施例所提供的終端的顯示方法及終端,其方法的應(yīng)用場(chǎng)景以及終端設(shè)備包括且不限于IOS系統(tǒng),Android系統(tǒng),windows系統(tǒng)以及搭載這些系統(tǒng)的終端或設(shè)備。以下實(shí)施例以Android系統(tǒng)及搭載Android系統(tǒng)的終端為描述對(duì)象作為實(shí)施例。
實(shí)施例一:
如圖1所示,本實(shí)施例提供一種終端的顯示方法,所述終端包括第一屏幕和第二屏幕。
本實(shí)施例中的雙屏合一顯示具體是指:使原本單獨(dú)運(yùn)行不同應(yīng)用、顯示不同應(yīng)用數(shù)據(jù)的兩個(gè)屏幕,合成為一個(gè)大屏幕共同顯示同一應(yīng)用的應(yīng)用數(shù)據(jù)。例如,使第一屏幕和第二屏幕在物理結(jié)構(gòu)上拼接合成為一個(gè)大屏幕,所述大屏幕的尺寸等于第一屏幕的尺寸和第二屏幕的尺寸之和,運(yùn)行中國(guó)象棋應(yīng)用,使第一屏幕顯示象棋棋盤(pán)的一半,第二屏幕顯示象棋棋盤(pán)的另一半,以實(shí)現(xiàn)兩個(gè)屏幕共同顯示整個(gè)象棋棋盤(pán)的效果,相比于在兩個(gè)屏幕上單獨(dú)運(yùn)行中國(guó)象棋應(yīng)用,本實(shí)施例所提供的方法可實(shí)現(xiàn)屏幕擴(kuò)展,使應(yīng)用數(shù)據(jù)顯示在兩個(gè)屏幕拼接合成的一個(gè)較大的屏幕上。
在具體應(yīng)用中,本發(fā)明實(shí)施例所提供的終端的顯示方法不僅可以應(yīng)用于包括兩個(gè)屏幕的安卓設(shè)備,還可以應(yīng)用于包括多個(gè)屏幕的安卓設(shè)備,以使多個(gè)屏幕共同顯示同一個(gè)應(yīng)用的數(shù)據(jù),以實(shí)現(xiàn)屏幕擴(kuò)展。例如,三個(gè)屏幕共同顯示包括三頁(yè)文字的文章,則第一屏幕顯示第一頁(yè)文字、第二屏幕顯示第二頁(yè)文字、第三屏幕顯示第三頁(yè)文字。
所述方法包括:
步驟S101:若桌面啟動(dòng)器檢測(cè)到雙屏合一指令,則觸發(fā)底層動(dòng)態(tài)卸載所述第一屏幕的第一驅(qū)動(dòng)和所述第二屏幕的第二驅(qū)動(dòng),并加載驅(qū)動(dòng)所述第一屏幕和所述第二屏幕合成顯示為第三屏幕的第三驅(qū)動(dòng)。
在具體應(yīng)用中,雙屏合一指令由用戶通過(guò)安卓設(shè)備的用戶界面輸入。
在一實(shí)施例中,步驟S101中的若桌面啟動(dòng)器檢測(cè)到雙屏合一指令包括:
桌面啟動(dòng)器接收用戶輸入的雙屏合一指令,根據(jù)所述雙屏合一指令,啟動(dòng)相應(yīng)的安卓安裝包(APK,AndroidPackage)。
在本實(shí)施例中,第一驅(qū)動(dòng)、第二驅(qū)動(dòng)和第三驅(qū)動(dòng)分別用于驅(qū)動(dòng)對(duì)應(yīng)的第一屏幕、第二屏幕和第三屏幕顯示應(yīng)用數(shù)據(jù)。
步驟S102:系統(tǒng)內(nèi)核(kernel)通過(guò)顯示合成(HWComposer)模塊、界面投遞(Surfaceflinger)服務(wù)和顯示管理服務(wù)向活動(dòng)管理服務(wù)發(fā)送通知。
步驟S103:所述活動(dòng)管理服務(wù)根據(jù)所述通知獲取預(yù)先保持的所述第一屏幕的活動(dòng)棧(ActivityStack)和所述第二屏幕的活動(dòng)棧,并將所述第一屏幕的活動(dòng)棧和所述第二屏幕的活動(dòng)棧合成為所述第三屏幕的活動(dòng)棧;
本實(shí)施例中,活動(dòng)棧(ActivityStack)是指用于放置和管理一個(gè)或多個(gè)相關(guān)聯(lián)的Activity的堆棧(Stack),每次啟動(dòng)的新Activity都將被添加到堆棧中,Activity相當(dāng)于是被記錄在活動(dòng)棧中,可以被查看和調(diào)出,包括一組相關(guān)聯(lián)的Activity的活動(dòng)棧相當(dāng)于是一個(gè)任務(wù)(task)。
在一實(shí)施例中,步驟S103包括:
所述活動(dòng)管理服務(wù)根據(jù)所述加載消息,調(diào)用其預(yù)先注冊(cè)的回調(diào)函數(shù)加載顯示函數(shù)(onDisplayAdded),將所述第一屏幕的活動(dòng)棧和所述第二屏幕的活動(dòng)棧合成為所述第三屏幕的活動(dòng)棧;
在具體應(yīng)用中,將所述第一屏幕的活動(dòng)棧和所述第二屏幕的活動(dòng)棧合成為所述第三屏幕的活動(dòng)棧,具體可以按照活動(dòng)棧中數(shù)據(jù)的順序依次排列第一屏幕的活動(dòng)棧數(shù)據(jù)和第二屏幕的活動(dòng)棧數(shù)據(jù)組成一個(gè)新的活動(dòng)棧,該新的活動(dòng)棧即為第三屏幕的活動(dòng)棧,也可以將第一屏幕的活動(dòng)棧數(shù)據(jù)按次序排在第二屏幕的活動(dòng)棧數(shù)據(jù)之后。
步驟S104:窗口管理服務(wù)根據(jù)所述第三屏幕的活動(dòng)棧生成所述第三屏幕的屏幕信息(DisplayContent),并生成放置所述屏幕信息的任務(wù)棧(TaskStack)。
本實(shí)施例中,任務(wù)棧(TaskStack)是指用于管理和放置一個(gè)或多個(gè)任務(wù)(Task)的堆棧(Stack),任務(wù)(Task)將相關(guān)聯(lián)的Activity組合在一起,然后放置在堆棧中。
在具體應(yīng)用中,所述屏幕信息具體是指屏幕的分辨率、display id等信息。
在一實(shí)施例中,步驟S104具體包括:
所述窗口管理服務(wù)調(diào)用其回調(diào)函數(shù)加載顯示函數(shù)(onDisplayAdded),根據(jù)所述第三屏幕的活動(dòng)棧生成所述第三屏幕的屏幕信息和放置所述屏幕信息的任務(wù)棧。
步驟S105:窗口管理服務(wù)根據(jù)所述屏幕信息重新對(duì)所述第一屏幕和所述第二屏幕合成的第三屏幕進(jìn)行窗口化計(jì)算,以生成所述第三屏幕的顯示窗口(surface)。
在具體應(yīng)用中,對(duì)所述第一屏幕和所述第二屏幕進(jìn)行窗口化計(jì)算,具體是指重新計(jì)算第一屏幕和第二屏幕的顯示窗口(windowstate)的顯示大小、顯示位置等。
在一實(shí)施例中,步驟S105具體包括:
窗口管理服務(wù)調(diào)用其performLayoutAndPlaceSurfacesLockedLoop函數(shù),以根據(jù)所述屏幕信息重新對(duì)所述第一屏幕和所述第二屏幕進(jìn)行窗口化計(jì)算,以生成所述第三屏幕的顯示窗口(surface)。
步驟S106:界面投遞服務(wù)將所述第三屏幕的顯示窗口發(fā)送給與所述第三屏幕對(duì)應(yīng)的顯示合成模塊,以通過(guò)所述顯示合成模塊將所述顯示窗口合成顯示在所述第三屏幕。
在一實(shí)施例中,步驟S106具體包括:
界面投遞服務(wù)的層結(jié)構(gòu)(layerstack)將所述第三屏幕的顯示窗口發(fā)送給與所述第三屏幕對(duì)應(yīng)的顯示合成模塊,以通過(guò)所述顯示合成模塊將所述顯示窗口合成顯示在所述第三屏幕。
在一實(shí)施例中,步驟S102之前包括:
活動(dòng)管理服務(wù)預(yù)先通過(guò)登記顯示接聽(tīng)器(registerDisplayListener)注冊(cè)熱拔插事件的回調(diào)函數(shù)刪除顯示函數(shù)(onDisplayRemoved)和回調(diào)函數(shù)加載顯示函數(shù)(onDisplayAdded)。
本發(fā)明實(shí)施例通過(guò)提供一種終端的顯示方法,可在無(wú)需重啟系統(tǒng)的前提下,把任意應(yīng)用的數(shù)據(jù)顯示到由兩個(gè)屏幕所合成的一個(gè)屏幕上,并且兼容性強(qiáng)可實(shí)現(xiàn)任意應(yīng)用的雙屏合一顯示功能,不需要更改安卓設(shè)備的硬件結(jié)構(gòu),易于實(shí)現(xiàn),適于廣泛推廣使用。
實(shí)施例二:
如圖2所示,在本實(shí)施例中,所述通知為熱拔插事件;步驟S102具體包括:
步驟S201:系統(tǒng)內(nèi)核向顯示合成模塊發(fā)送一個(gè)熱拔插事件,所述熱拔插事件包括卸載消息(remove)和加載消息(add),其中,所述卸載消息用于通知其他線程所述底層動(dòng)態(tài)正在卸載所述第一驅(qū)動(dòng)和所述第二驅(qū)動(dòng),所述加載消息用于通知其他線程所述底層動(dòng)態(tài)正在加載所述第三驅(qū)動(dòng);
步驟S202:所述顯示合成模塊調(diào)用鉤子函數(shù)(hook_hotplug)將所述熱拔插事件發(fā)送給界面投遞服務(wù);
步驟S203:所述界面投遞服務(wù)接收到所述熱插拔事件,則調(diào)用其回調(diào)函數(shù)熱撥插事件接收函數(shù)(onHotplugReceived)獲取所述第三屏幕的屏幕信息并將所述熱插拔事件發(fā)送給顯示管理服務(wù)。
在具體應(yīng)用中,顯示管理服務(wù)接收到卸載消息后,會(huì)通過(guò)其顯示事件接收器(DisplayEventReceiver)調(diào)用活動(dòng)管理服務(wù)預(yù)先注冊(cè)的回調(diào)函數(shù),然后使活動(dòng)管理服務(wù)根據(jù)其預(yù)先注冊(cè)的回調(diào)函數(shù)執(zhí)行相應(yīng)的任務(wù)。
步驟S204:所述顯示管理服務(wù)將所述熱拔插事件發(fā)送給所述活動(dòng)管理服務(wù)(AMS,ActivityManagerService);
步驟S205:所述活動(dòng)管理服務(wù)根據(jù)所述卸載消息調(diào)用其預(yù)先注冊(cè)的回調(diào)函數(shù)刪除顯示函數(shù),將所述第一屏幕的活動(dòng)棧保持在第一臨時(shí)鏈表中,將所述第二屏幕的活動(dòng)棧保持在第二臨時(shí)鏈表中。
在一實(shí)施例中,步驟S205之后還包括:
所述顯示管理服務(wù)將所述加載消息發(fā)送給所述窗口管理服務(wù)(WindowManagerServier);
所述窗口管理服務(wù)根據(jù)所述加載消息調(diào)用其回調(diào)函數(shù)刪除顯示函數(shù),清除與該窗口管理服務(wù)對(duì)應(yīng)的任務(wù)棧(TaskStack);
所述窗口管理服務(wù)調(diào)用其窗口鎖定函數(shù),鎖定所述第一屏幕的顯示窗口(surface)和所述第二屏幕的顯示窗口,以停止繼續(xù)刷新所述第一屏幕和所述第二屏幕所顯示的數(shù)據(jù)。
在具體應(yīng)用中,所述屏幕信息具體是指屏幕的分辨率、display id等信息。
本發(fā)明實(shí)施例通過(guò)發(fā)送熱拔插事件來(lái)通知其他服務(wù)“底層動(dòng)態(tài)卸載所述第一屏幕的第一驅(qū)動(dòng)和所述第二屏幕的第二驅(qū)動(dòng),并加載驅(qū)動(dòng)所述第一屏幕和所述第二屏幕合成顯示為第三屏幕的第三驅(qū)動(dòng)”的事件,可以使其他服務(wù)及時(shí)獲知當(dāng)前的屏幕狀態(tài),然后及時(shí)啟動(dòng)相應(yīng)的任務(wù),提高了系統(tǒng)響應(yīng)速度,縮短了屏幕合成時(shí)間。
實(shí)施例三:
如圖3所示,本實(shí)施例所提供的終端10,其包括第一屏幕和第二屏幕,還包括:
觸發(fā)單元101,用于若桌面啟動(dòng)器檢測(cè)到雙屏合一指令,則觸發(fā)底層動(dòng)態(tài)卸載所述第一屏幕的第一驅(qū)動(dòng)和所述第二屏幕的第二驅(qū)動(dòng),加載驅(qū)動(dòng)所述第一屏幕和所述第二屏幕合成顯示為第三屏幕的第三驅(qū)動(dòng);
通知單元102,用于系統(tǒng)內(nèi)核通過(guò)顯示合成模塊、界面投遞服務(wù)和顯示管理服務(wù)向活動(dòng)管理服務(wù)發(fā)送通知;
活動(dòng)棧合成單元103,用于所述活動(dòng)管理服務(wù)根據(jù)所述通知獲取預(yù)先保持的所述第一屏幕的活動(dòng)棧和所述第二屏幕的活動(dòng)棧,并將所述第一屏幕的活動(dòng)棧和所述第二屏幕的活動(dòng)棧合成為所述第三屏幕的活動(dòng)棧;
屏幕信息生成單元104,用于窗口管理服務(wù)根據(jù)所述第三屏幕的活動(dòng)棧生成所述第三屏幕的屏幕信息,并生成放置所述屏幕信息的任務(wù)棧;
顯示窗口生成單元105,用于窗口管理服務(wù)根據(jù)所述屏幕信息重新對(duì)所述第一屏幕和所述第二屏幕合成的第三屏幕進(jìn)行窗口化計(jì)算,以生成所述第三屏幕的顯示窗口;
合成顯示單元106,用于界面投遞服務(wù)將所述第三屏幕的顯示窗口發(fā)送給與所述第三屏幕對(duì)應(yīng)的顯示合成模塊,以通過(guò)所述顯示合成模塊將所述顯示窗口合成顯示在所述第三屏幕。
在一實(shí)施例中,觸發(fā)單元101還用于桌面啟動(dòng)器接收用戶輸入的雙屏合一指令,根據(jù)所述雙屏合一指令,啟動(dòng)相應(yīng)的安卓安裝包(APK,AndroidPackage),所述安卓安裝包的底層動(dòng)態(tài)卸載所述第一屏幕的第一驅(qū)動(dòng)和所述第二屏幕的第二驅(qū)動(dòng),并加載驅(qū)動(dòng)所述第一屏幕和所述第二屏幕合成顯示為第三屏幕的第三驅(qū)動(dòng)。
在一實(shí)施例中,活動(dòng)棧合成單元103具體用于所述活動(dòng)管理服務(wù)根據(jù)所述加載消息,調(diào)用其預(yù)先注冊(cè)的回調(diào)函數(shù)加載顯示函數(shù),將所述第一屏幕的活動(dòng)棧和所述第二屏幕的活動(dòng)棧合成為所述第三屏幕的活動(dòng)棧;
在一實(shí)施例中,屏幕信息生成單元104,具體用于所述窗口管理服務(wù)調(diào)用其回調(diào)函數(shù)加載顯示函數(shù),根據(jù)所述第三屏幕的活動(dòng)棧生成所述第三屏幕的屏幕信息和放置所述屏幕信息的任務(wù)棧。
在一實(shí)施例中,顯示窗口生成單元105,具體用于窗口管理服務(wù)調(diào)用其窗口鎖定Loop函數(shù),以根據(jù)所述屏幕信息重新對(duì)所述第一屏幕和所述第二屏幕進(jìn)行窗口化計(jì)算,以生成所述第三屏幕的顯示窗口(surface)。
在一實(shí)施例中,合成顯示單元106,具體用于界面投遞服務(wù)的層結(jié)構(gòu)(layerstack)將所述第三屏幕的顯示窗口發(fā)送給與所述第三屏幕對(duì)應(yīng)的顯示合成模塊,以通過(guò)所述顯示合成模塊將所述顯示窗口合成顯示在所述第三屏幕。
在一實(shí)施例中,所述終端還包括:
回調(diào)函數(shù)注冊(cè)單元,用于活動(dòng)管理服務(wù)預(yù)先通過(guò)登記顯示接聽(tīng)器(registerDisplayListener)注冊(cè)熱拔插事件的回調(diào)函數(shù)刪除顯示函數(shù)和回調(diào)函數(shù)加載顯示函數(shù)。
本發(fā)明實(shí)施例通過(guò)提供一種終端的顯示方法,可在無(wú)需重啟系統(tǒng)的前提下,把任意應(yīng)用的數(shù)據(jù)顯示到由兩個(gè)屏幕所合成的一個(gè)屏幕上,并且兼容性強(qiáng)可實(shí)現(xiàn)任意應(yīng)用的雙屏合一顯示功能,不需要更改安卓設(shè)備的硬件結(jié)構(gòu),易于實(shí)現(xiàn),適于廣泛推廣使用。
實(shí)施例四:
如圖4所示,在本實(shí)施例中,所述通知為熱拔插事件;通知單元102具體包括:
第一熱拔插事件發(fā)送單元201,用于系統(tǒng)內(nèi)核向顯示合成模塊發(fā)送一個(gè)熱拔插事件,所述熱拔插事件包括卸載消息和加載消息,其中,所述卸載消息用于通知其他線程所述底層動(dòng)態(tài)正在卸載所述第一驅(qū)動(dòng)和所述第二驅(qū)動(dòng),所述加載消息用于通知其他線程所述底層動(dòng)態(tài)正在加載所述第三驅(qū)動(dòng);
第二熱拔插事件發(fā)送單元202,用于所述顯示合成模塊調(diào)用鉤子函數(shù)將所述熱拔插事件發(fā)送給界面投遞服務(wù);
屏幕信息獲取單元203,用于所述界面投遞服務(wù)接收到所述熱插拔事件,則調(diào)用其回調(diào)函數(shù)熱撥插事件接收函數(shù)獲取所述第三屏幕的屏幕信息并將所述熱插拔事件發(fā)送給顯示管理服務(wù);
第三熱拔插事件發(fā)送單元204,用于所述顯示管理服務(wù)將所述熱拔插事件發(fā)送給所述活動(dòng)管理服務(wù);
活動(dòng)棧保持單元205,用于所述活動(dòng)管理服務(wù)根據(jù)所述卸載消息調(diào)用其預(yù)先注冊(cè)的回調(diào)函數(shù)刪除顯示函數(shù),將所述第一屏幕的活動(dòng)棧保持在第一臨時(shí)鏈表中,將所述第二屏幕的活動(dòng)棧保持在第二臨時(shí)鏈表中。
在具體應(yīng)用中,活動(dòng)棧保持單元,具體用于顯示管理服務(wù)接收到卸載消息后,通過(guò)其顯示事件接收器(DisplayEventReceiver)調(diào)用活動(dòng)管理服務(wù)預(yù)先注冊(cè)的回調(diào)函數(shù),然后使活動(dòng)管理服務(wù)根據(jù)預(yù)先注冊(cè)的回調(diào)函數(shù)執(zhí)行相應(yīng)的任務(wù)。
在一實(shí)施例中,通知單元102具體還包括:
第四熱拔插事件發(fā)送單元,用于所述顯示管理服務(wù)將所述加載消息發(fā)送給所述窗口管理服務(wù);
任務(wù)棧清除單元,用于所述窗口管理服務(wù)根據(jù)所述加載消息調(diào)用其回調(diào)函數(shù)刪除顯示函數(shù),清除與該窗口管理服務(wù)對(duì)應(yīng)的任務(wù)棧;
鎖屏單元,用于所述窗口管理服務(wù)調(diào)用其窗口鎖定函數(shù),鎖定所述第一屏幕的顯示窗口和所述第二屏幕的顯示窗口,以停止繼續(xù)刷新所述第一屏幕和所述第二屏幕所顯示的數(shù)據(jù)。
本發(fā)明實(shí)施例通過(guò)發(fā)送熱拔插事件來(lái)通知其他服務(wù)“底層動(dòng)態(tài)卸載所述第一屏幕的第一驅(qū)動(dòng)和所述第二屏幕的第二驅(qū)動(dòng),并加載驅(qū)動(dòng)所述第一屏幕和所述第二屏幕合成顯示為第三屏幕的第三驅(qū)動(dòng)”的事件,可以使其他服務(wù)及時(shí)獲知當(dāng)前的屏幕狀態(tài),然后及時(shí)啟動(dòng)相應(yīng)的任務(wù),提高了系統(tǒng)響應(yīng)速度,縮短了屏幕合成時(shí)間。
實(shí)施例五:
如圖5所示,本實(shí)施例所提供的終端100,其包括:
處理器(processor)110,通信接口(Communications Interface)120,存儲(chǔ)器(memory)130,總線140,第一屏幕150和第二屏幕160。
處理器110,通信接口120,存儲(chǔ)器130,距離檢測(cè)單元150和顯示單元160通過(guò)總線140完成相互間的通信。
通信接口120,用于與外界設(shè)備,例如,個(gè)人電腦、智能手機(jī)等通信。
第一屏幕150和第二屏幕160在物理結(jié)構(gòu)上相互并排拼接設(shè)置,用于共同顯示一個(gè)應(yīng)用數(shù)據(jù),以實(shí)現(xiàn)屏幕擴(kuò)展功能。
處理器110,用于執(zhí)行程序131;
具體地,程序131可以包括程序代碼,所述程序代碼包括計(jì)算機(jī)操作指令。
處理器110可能是一個(gè)中央處理器CPU,或者是特定集成電路ASIC(Application Specific Integrated Circuit),或者是被配置成實(shí)施本發(fā)明實(shí)施例的一個(gè)或多個(gè)集成電路。
存儲(chǔ)器130,用于存放程序131。存儲(chǔ)器130可能包含高速RAM存儲(chǔ)器,也可能還包括非易失性存儲(chǔ)器(non-volatile memory),例如至少一個(gè)磁盤(pán)存儲(chǔ)器。程序131具體可以包括:
觸發(fā)單元1311,用于若桌面啟動(dòng)器檢測(cè)到雙屏合一指令,則觸發(fā)底層動(dòng)態(tài)卸載所述第一屏幕的第一驅(qū)動(dòng)和所述第二屏幕的第二驅(qū)動(dòng),加載驅(qū)動(dòng)所述第一屏幕和所述第二屏幕合成顯示為第三屏幕的第三驅(qū)動(dòng);
通知單元1312,用于系統(tǒng)內(nèi)核通過(guò)顯示合成模塊、界面投遞服務(wù)和顯示管理服務(wù)向活動(dòng)管理服務(wù)發(fā)送通知;
活動(dòng)棧合成單元1313,用于所述活動(dòng)管理服務(wù)根據(jù)所述通知獲取預(yù)先保持的所述第一屏幕的活動(dòng)棧和所述第二屏幕的活動(dòng)棧,并將所述第一屏幕的活動(dòng)棧和所述第二屏幕的活動(dòng)棧合成為所述第三屏幕的活動(dòng)棧;
屏幕信息生成單元1314,用于窗口管理服務(wù)根據(jù)所述第三屏幕的活動(dòng)棧生成所述第三屏幕的屏幕信息,并生成放置所述屏幕信息的任務(wù)棧;
顯示窗口生成單元1315,用于窗口管理服務(wù)根據(jù)所述屏幕信息重新對(duì)所述第一屏幕和所述第二屏幕合成的第三屏幕進(jìn)行窗口化計(jì)算,以生成所述第三屏幕的顯示窗口;
合成顯示單元1316,用于界面投遞服務(wù)將所述第三屏幕的顯示窗口發(fā)送給與所述第三屏幕對(duì)應(yīng)的顯示合成模塊,以通過(guò)所述顯示合成模塊將所述顯示窗口合成顯示在所述第三屏幕。
在一實(shí)施例中,程序131具體還可以包括:
第一熱拔插事件發(fā)送單元,用于系統(tǒng)內(nèi)核向顯示合成模塊發(fā)送一個(gè)熱拔插事件,所述熱拔插事件包括卸載消息和加載消息,其中,所述卸載消息用于通知其他線程所述底層動(dòng)態(tài)正在卸載所述第一驅(qū)動(dòng)和所述第二驅(qū)動(dòng),所述加載消息用于通知其他線程所述底層動(dòng)態(tài)正在加載所述第三驅(qū)動(dòng);
第二熱拔插事件發(fā)送單元,用于所述顯示合成模塊調(diào)用鉤子函數(shù)將所述熱拔插事件發(fā)送給界面投遞服務(wù);
屏幕信息獲取單元,用于所述界面投遞服務(wù)接收到所述熱插拔事件,則調(diào)用其回調(diào)函數(shù)熱撥插事件接收函數(shù)獲取所述第三屏幕的屏幕信息并將所述熱插拔事件發(fā)送給顯示管理服務(wù);
第三熱拔插事件發(fā)送單元,用于所述顯示管理服務(wù)將所述熱拔插事件發(fā)送給所述活動(dòng)管理服務(wù);
活動(dòng)棧保持單元,用于所述活動(dòng)管理服務(wù)根據(jù)所述卸載消息調(diào)用其預(yù)先注冊(cè)的回調(diào)函數(shù)刪除顯示函數(shù),將所述第一屏幕的活動(dòng)棧保持在第一臨時(shí)鏈表中,將所述第二屏幕的活動(dòng)棧保持在第二臨時(shí)鏈表中。
在一實(shí)施例中,程序131具體還可以包括:
第四熱拔插事件發(fā)送單元,用于所述顯示管理服務(wù)將所述加載消息發(fā)送給所述窗口管理服務(wù);
任務(wù)棧清除單元,用于所述窗口管理服務(wù)根據(jù)所述加載消息調(diào)用其回調(diào)函數(shù)刪除顯示函數(shù),清除與該窗口管理服務(wù)對(duì)應(yīng)的任務(wù)棧;
鎖屏單元,用于所述窗口管理服務(wù)調(diào)用其窗口鎖定函數(shù),鎖定所述第一屏幕的顯示窗口和所述第二屏幕的顯示窗口,以停止繼續(xù)刷新所述第一屏幕和所述第二屏幕所顯示的數(shù)據(jù)。
在一實(shí)施例中,所述活動(dòng)棧合成單元具體用于所述活動(dòng)管理服務(wù)根據(jù)所述加載消息,調(diào)用其預(yù)先注冊(cè)的回調(diào)函數(shù)加載顯示函數(shù),將所述第一屏幕的活動(dòng)棧和所述第二屏幕的活動(dòng)棧合成為所述第三屏幕的活動(dòng)棧;
所述屏幕信息生成單元具體用于所述窗口管理服務(wù)調(diào)用其回調(diào)函數(shù)加載顯示函數(shù),根據(jù)所述第三屏幕的活動(dòng)棧生成所述第三屏幕的屏幕信息和放置所述屏幕信息的任務(wù)棧。
在一實(shí)施例中,程序131具體還可以包括:
回調(diào)函數(shù)注冊(cè)單元,用于活動(dòng)管理服務(wù)預(yù)先通過(guò)登記顯示接聽(tīng)器注冊(cè)熱拔插事件的回調(diào)函數(shù)刪除顯示函數(shù)和回調(diào)函數(shù)加載顯示函數(shù)。
在一實(shí)施例中,程序131具體還可以包括:
本發(fā)明所有實(shí)施例中的單元,可以通過(guò)通用集成電路,例如CPU(Central Processing Unit,中央處理器),或通過(guò)ASIC(Application Specific Integrated Circuit,專用集成電路)來(lái)實(shí)現(xiàn)。
本發(fā)明實(shí)施例方法中的步驟可以根據(jù)實(shí)際需要進(jìn)行順序調(diào)整、合并和刪減。
本發(fā)明實(shí)施例裝置中的單元可以根據(jù)實(shí)際需要進(jìn)行合并、劃分和刪減。
本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以通過(guò)計(jì)算機(jī)程序來(lái)指令相關(guān)的硬件來(lái)完成,所述的程序可存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲(chǔ)介質(zhì)可為磁碟、光盤(pán)、只讀存儲(chǔ)記憶體(Read-Only Memory,ROM)或隨機(jī)存儲(chǔ)記憶體(Random Access Memory,RAM)等。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。