本發(fā)明涉及終端設(shè)備技術(shù)領(lǐng)域,具體而言,本發(fā)明涉及一種基于多系統(tǒng)的輸入輸出方法及裝置。
背景技術(shù):
隨著社會的進步和科技的發(fā)展,智能手機、平板電腦和電子閱讀器等終端設(shè)備廣泛普及。這些終端設(shè)備中通常安裝有操作系統(tǒng)。當前,終端設(shè)備中的操作系統(tǒng)包括linux kernel作為內(nèi)核的操作系統(tǒng),例如Android(安卓)系統(tǒng)。
現(xiàn)有的終端設(shè)備中操作系統(tǒng)的輸入輸出包括顯示輸出和輸入。以Android系統(tǒng)為例,現(xiàn)有的操作系統(tǒng)的輸入方法通常包括:內(nèi)核通過輸入硬件接收到用戶的輸入事件后,傳遞到應(yīng)用層的應(yīng)用,由應(yīng)用對輸入事件進行響應(yīng)處理。
目前,終端設(shè)備已經(jīng)非常普及,隨之而來的是終端設(shè)備的安全問題日益頻發(fā)。技術(shù)人員考慮利用Linux container(容器)虛擬化技術(shù)創(chuàng)建多個容器,在容器中安裝操作系統(tǒng);容器中的操作系統(tǒng)作為容器系統(tǒng)。終端設(shè)備可以同時運行多個容器系統(tǒng),且各容器系統(tǒng)的進程之間是互相隔離的,當一個容器系統(tǒng)受到不安全信息的入侵時,入侵的后果被限制在該容器系統(tǒng)內(nèi)部,而不會影響到其它容器系統(tǒng),因此基于Linux container虛擬化技術(shù)的多操作系統(tǒng)具有較高的安全性,可以提升終端設(shè)備的安全性。
然而,本發(fā)明的發(fā)明人發(fā)現(xiàn),若將現(xiàn)有的操作系統(tǒng)的輸入輸出方法應(yīng)用到終端設(shè)備的多容器系統(tǒng)中,容易造成不同容器系統(tǒng)對同一輸入設(shè)備或同一顯示輸出設(shè)備產(chǎn)生競爭,容易導(dǎo)致混亂的結(jié)果。
例如,根據(jù)現(xiàn)有的操作系統(tǒng)的輸入輸出方法,當用戶期望某一個容器系統(tǒng)向終端設(shè)備進行輸入操作,形成一個輸入事件時,結(jié)果很可能由另一個容器系統(tǒng)對該輸入事件進行了響應(yīng),而用戶期望的容器系統(tǒng)未響應(yīng)該輸入事件,導(dǎo)致輸入響應(yīng)混亂,給用戶與終端設(shè)備進行人機交互帶來極大的困擾,嚴重影響用戶體驗。
技術(shù)實現(xiàn)要素:
本發(fā)明針對現(xiàn)有方式的缺點,提出一種基于多系統(tǒng)的輸入輸出方法及裝置,用以解決現(xiàn)有技術(shù)存在多系統(tǒng)輸入響應(yīng)混亂的問題。
本發(fā)明的實施例根據(jù)第一個方面,提供了一種基于多系統(tǒng)的輸入輸出方法,包括:
內(nèi)核中的輸入模塊接收到輸入事件后,分別向本設(shè)備中兩個以上容器系統(tǒng)發(fā)送;
第一容器系統(tǒng)中的輸入服務(wù)模塊接收到所述輸入事件后,若檢測到第一容器系統(tǒng)處于前臺,則將所述輸入事件發(fā)送至對應(yīng)的應(yīng)用;
其它容器系統(tǒng)中的輸入服務(wù)模塊接收到所述輸入事件后,若檢測到所述其它容器系統(tǒng)處于后臺,則忽略所述輸入事件。
本發(fā)明的實施例根據(jù)第二個方面,還提供了一種基于多系統(tǒng)的輸入輸出方法,包括:
主控系統(tǒng)中的主控輸入模塊接收到輸入事件后,檢測本設(shè)備中兩個以上容器系統(tǒng)的前后臺狀態(tài),將所述輸入事件向位于前臺的容器系統(tǒng)發(fā)送;
當?shù)谝蝗萜飨到y(tǒng)中的輸入模塊接收到所述輸入事件后,將所述輸入事件發(fā)送至第一容器系統(tǒng)中對應(yīng)的應(yīng)用。
本發(fā)明的實施例根據(jù)第三個方面,還提供了一種基于多系統(tǒng)的輸入輸出裝置,包括:內(nèi)核和兩個以上容器系統(tǒng);
所述內(nèi)核包括:
輸入模塊,用于接收到輸入事件后,分別向所述兩個以上容器系統(tǒng)發(fā)送;
所述兩個以上容器系統(tǒng)中的第一容器系統(tǒng)包括:
輸入服務(wù)模塊,用于接收到所述輸入事件后,若檢測到第一容器系統(tǒng)處于前臺,則將所述輸入事件發(fā)送至對應(yīng)的應(yīng)用;
所述兩個以上容器系統(tǒng)中的其它容器系統(tǒng)包括:
輸入服務(wù)模塊,用于接收到所述輸入事件后,若檢測到所述其它容器系統(tǒng)處于后臺,則忽略所述輸入事件。
本發(fā)明的實施例根據(jù)第四個方面,還提供了一種基于多系統(tǒng)的輸入輸出裝置,包括:主控系統(tǒng)和兩個以上容器系統(tǒng);
所述主控系統(tǒng)包括:
主控輸入模塊,用于接收到輸入事件后,檢測本設(shè)備中所述兩個以上容器系統(tǒng)的前后臺狀態(tài),將所述輸入事件向位于前臺的容器系統(tǒng)發(fā)送;
所述兩個以上容器系統(tǒng)中的第一容器系統(tǒng)包括:
輸入模塊,用于當接收到所述輸入事件后,將所述輸入事件發(fā)送至第一容器系統(tǒng)中對應(yīng)的應(yīng)用。
根據(jù)本發(fā)明的第一和/或第三個方面,由各容器系統(tǒng)各自的輸入服務(wù)模塊檢測各容器系統(tǒng)的前后臺狀態(tài);由位于前臺的第一容器系統(tǒng)的輸入服務(wù)模塊獨占終端設(shè)備的輸入設(shè)備獲取輸入事件,并進行響應(yīng)??梢苑乐共煌萜飨到y(tǒng)對輸入事件進行誤響應(yīng)的混亂情況,保證用戶可以與其預(yù)期的容器系統(tǒng)(即為切換至前臺的第一容器系統(tǒng))進行交互,提升用戶的體驗。
根據(jù)本發(fā)明的第二和/或第四個方面,由主控系統(tǒng)中的主控輸入模塊統(tǒng)檢測各容器系統(tǒng)的前后臺狀態(tài),將接收的輸入事件僅向位于前臺的第一容器系統(tǒng)發(fā)送,而不向位于后臺的其它容器系統(tǒng)發(fā)送,相當于第一容器系統(tǒng)獨占輸入設(shè)備對輸入事件進行響應(yīng)??梢苑乐共煌萜飨到y(tǒng)對輸入事件進行誤響應(yīng)的混亂情況,保證用戶可以與其預(yù)期的容器系統(tǒng)(即為切換至前臺的第一容器系統(tǒng))進行交互,提升用戶的體驗。
本發(fā)明附加的方面和優(yōu)點將在下面的描述中部分給出,這些將從下面的描述中變得明顯,或通過本發(fā)明的實踐了解到。
附圖說明
本發(fā)明上述的和/或附加的方面和優(yōu)點從下面結(jié)合附圖對實施例的描述中將變得明顯和容易理解,其中:
圖1為本發(fā)明實施例一的終端設(shè)備的內(nèi)部結(jié)構(gòu)的框架示意圖;
圖2為本發(fā)明實施例一的基于多系統(tǒng)的輸入輸出方法的流程示意圖;
圖3為本發(fā)明實施例一的基于多系統(tǒng)的輸入輸出裝置的內(nèi)部結(jié)構(gòu)的框架示意圖;
圖4為本發(fā)明實施例二的終端設(shè)備的內(nèi)部結(jié)構(gòu)的框架示意圖;
圖5為本發(fā)明實施例二的基于多系統(tǒng)的輸入輸出方法的流程示意圖;
圖6為本發(fā)明實施例二的基于多系統(tǒng)的輸入輸出裝置的內(nèi)部結(jié)構(gòu)的框架示意圖。
具體實施方式
下面詳細描述本發(fā)明的實施例,所述實施例的示例在附圖中示出,其中自始至終相同或類似的標號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實施例是示例性的,僅用于解釋本發(fā)明,而不能解釋為對本發(fā)明的限制。
本技術(shù)領(lǐng)域技術(shù)人員可以理解,除非特意聲明,這里使用的單數(shù)形式“一”、“一個”、“所述”和“該”也可包括復(fù)數(shù)形式。應(yīng)該進一步理解的是,本發(fā)明的說明書中使用的措辭“包括”是指存在所述特征、整數(shù)、步驟、操作、元件和/或組件,但是并不排除存在或添加一個或多個其他特征、整數(shù)、步驟、操作、元件、組件和/或它們的組。應(yīng)該理解,當我們稱元件被“連接”或“耦接”到另一元件時,它可以直接連接或耦接到其他元件,或者也可以存在中間元件。此外,這里使用的“連接”或“耦接”可以包括無線連接或無線耦接。這里使用的措辭“和/或”包括一個或更多個相關(guān)聯(lián)的列出項的全部或任一單元和全部組合。
本技術(shù)領(lǐng)域技術(shù)人員可以理解,除非另外定義,這里使用的所有術(shù)語(包括技術(shù)術(shù)語和科學(xué)術(shù)語),具有與本發(fā)明所屬領(lǐng)域中的普通技術(shù)人員的一般理解相同的意義。還應(yīng)該理解的是,諸如通用字典中定義的那些術(shù)語,應(yīng)該被理解為具有與現(xiàn)有技術(shù)的上下文中的意義一致的意義,并且除非像這里一樣被特定定義,否則不會用理想化或過于正式的含義來解釋。
本技術(shù)領(lǐng)域技術(shù)人員可以理解,這里所使用的“終端”、“終端設(shè)備”既包括無線信號接收器的設(shè)備,其僅具備無發(fā)射能力的無線信號接收器的設(shè)備,又包括接收和發(fā)射硬件的設(shè)備,其具有能夠在雙向通信鏈路上,進行雙向通信的接收和發(fā)射硬件的設(shè)備。這種設(shè)備可以包括:蜂窩或其他通信設(shè)備,其具有單線路顯示器或多線路顯示器或沒有多線路顯示器的蜂窩或其他通信設(shè)備;PCS(Personal Communications Service,個人通信系統(tǒng)),其可以組合語音、數(shù)據(jù)處理、傳真和/或數(shù)據(jù)通信能力;PDA(Personal Digital Assistant,個人數(shù)字助理),其可以包括射頻接收器、尋呼機、互聯(lián)網(wǎng)/內(nèi)聯(lián)網(wǎng)訪問、網(wǎng)絡(luò)瀏覽器、記事本、日歷和/或GPS(Global Positioning System,全球定位系統(tǒng))接收器;常規(guī)膝上型和/或掌上型計算機或其他設(shè)備,其具有和/或包括射頻接收器的常規(guī)膝上型和/或掌上型計算機或其他設(shè)備。這里所使用的“終端”、“終端設(shè)備”可以是便攜式、可運輸、安裝在交通工具(航空、海運和/或陸地)中的,或者適合于和/或配置為在本地運行,和/或以分布形式,運行在地球和/或空間的任何其他位置運行。這里所使用的“終端”、“終端設(shè)備”還可以是通信終端、上網(wǎng)終端、音樂/視頻播放終端,例如可以是PDA、MID(Mobile Internet Device,移動互聯(lián)網(wǎng)設(shè)備)和/或具有音樂/視頻播放功能的移動電話,也可以是智能電視、機頂盒等設(shè)備。
本發(fā)明的發(fā)明人還發(fā)現(xiàn),現(xiàn)有的操作系統(tǒng)的顯示輸出方法通常包括:Android系統(tǒng)中在內(nèi)核kernel的上層還設(shè)置有顯示合成模塊,例如SurfaceFlinger(外觀投擲者)模塊;SurfaceFlinger模塊對操作系統(tǒng)中運行的應(yīng)用窗口、壁紙和狀態(tài)欄等需要顯示的內(nèi)容等進行合成,再將合成的待顯示的內(nèi)容輸出到內(nèi)核中,經(jīng)過顯示硬件的驅(qū)動,進行顯示。然而,根據(jù)現(xiàn)有的操作系統(tǒng)的輸入輸出方法,當兩個容器系統(tǒng)都需要占用顯示輸出設(shè)備(包括屏幕)進行顯示輸出時,很可能出現(xiàn)屏幕上一會顯示一個容器系統(tǒng)的內(nèi)容,再一會又顯示另一個容器系統(tǒng)的內(nèi)容,導(dǎo)致顯示內(nèi)容混亂,給用戶與終端設(shè)備進行人機交互帶來極大的困擾,嚴重影響用戶體驗。
本發(fā)明的發(fā)明人考慮到,可以在終端設(shè)備中增設(shè)識別每個容器系統(tǒng)的運行狀態(tài)的功能。根據(jù)各容器系統(tǒng)的運行狀態(tài),使得處于某一運行狀態(tài)(例如位于前臺)的容器系統(tǒng)可以進行顯示輸出并對輸入事件進行響應(yīng),而此時其它容器系統(tǒng)無法進行顯示輸出,也無法對輸入事件進行響應(yīng)。
基于上述考慮,本發(fā)明的發(fā)明人提供了兩種改進思路。思路一、由各容器系統(tǒng)檢測各自的運行狀態(tài);思路二、由各容器系統(tǒng)之外的內(nèi)核檢測各容器系統(tǒng)的運行狀態(tài)。思路一、二分別對應(yīng)本發(fā)明的下述實施例一、二。
實施例一
本發(fā)明實施例一中的終端設(shè)備的內(nèi)部結(jié)構(gòu)的框架示意圖如圖1所示,包括:兩個以上容器系統(tǒng)、內(nèi)核、顯示硬件和輸入硬件。
其中,本發(fā)明(包括實施例一和二)中的容器系統(tǒng),是設(shè)置在以Linux container(容器)虛擬化技術(shù)創(chuàng)建的容器中的操作系統(tǒng)。操作系統(tǒng)可以為傳統(tǒng)意義上的Linux操作系統(tǒng)或Unix操作系統(tǒng),也可以是基于Linux操作系統(tǒng)衍生出來的Android系統(tǒng)、Ubuntu系統(tǒng)等,還可以為以Windows平臺為基礎(chǔ)的windows系統(tǒng)等等。實際上,本發(fā)明中的容器系統(tǒng)不限于前述例舉的操作系統(tǒng),可以涵蓋所有能夠在容器中運行的操作系統(tǒng)。為便于描述,下面以Android系統(tǒng)作為容器系統(tǒng)為例闡述本發(fā)明的技術(shù)方案。
本發(fā)明實施例一的容器系統(tǒng)中,包括:顯示服務(wù)模塊和輸入服務(wù)模塊。較佳地,顯示服務(wù)模塊可以是在傳統(tǒng)的SurfaceFlinger(外觀投擲者)模塊的基礎(chǔ)上改進得到的。輸入服務(wù)模塊,可以是在傳統(tǒng)的輸入模塊的基礎(chǔ)上改進得到的。顯示服務(wù)模塊和輸入服務(wù)模塊分別與容器系統(tǒng)中的多個應(yīng)用,又稱APP(Application,應(yīng)用程序)進行交互。進一步,圖1中的實線表示數(shù)據(jù)傳輸(數(shù)據(jù)交互的一種),虛線表示數(shù)據(jù)未傳輸(即未進行數(shù)據(jù)交互)。
較佳地,為便于描述,本發(fā)明中將位于前臺的容器系統(tǒng)稱為第一容器系統(tǒng);將位于后臺的容器系統(tǒng)統(tǒng)一稱為其它容器系統(tǒng)。
本發(fā)明實施例一中的內(nèi)核可以是kernel。較佳地,內(nèi)核可以是多個版本之一的kernel。內(nèi)核中包括顯示模塊和輸入模塊。
本發(fā)明實施例一中的容器系統(tǒng)中的顯示服務(wù)模塊、輸入服務(wù)模塊分別與內(nèi)核中的顯示模塊、輸入模塊進行交互。
本發(fā)明實施例一中的顯示硬件、輸入硬件分別與內(nèi)核中的Kernel中的顯示模塊、輸入模塊進行交互。
下面介紹本發(fā)明實施例一的基于多系統(tǒng)的輸入輸出方法的流程示意圖如圖2所示,包括下述步驟:
S201:內(nèi)核中的輸入模塊接收到輸入事件后,分別向本設(shè)備中兩個以上容器系統(tǒng)發(fā)送。
內(nèi)核中的輸入模塊,通過終端設(shè)備中的輸入硬件接收到用戶的輸入操作后,將用戶的輸入信息封裝為輸入事件。
內(nèi)核中的輸入模塊將封裝的輸入事件,分別向本終端設(shè)備中位于前臺的第一容器系統(tǒng)中的輸入服務(wù)模塊、以及位于后臺的其它容器系統(tǒng)中的輸入服務(wù)模塊進行發(fā)送。
S202:第一容器系統(tǒng)中的輸入服務(wù)模塊接收到輸入事件后,若檢測到第一容器系統(tǒng)處于前臺,則將輸入事件發(fā)送至對應(yīng)的應(yīng)用。
第一容器系統(tǒng)中的輸入服務(wù)模塊接收到輸入事件后,檢測本輸入服務(wù)模塊所在的第一容器系統(tǒng)的運行狀態(tài)。
當該輸入服務(wù)模塊檢測到第一容器系統(tǒng)位于前臺時,確定出接收的輸入事件在第一容器系統(tǒng)中對應(yīng)的應(yīng)用,例如根據(jù)輸入事件中攜帶的應(yīng)用標識確定出對應(yīng)的應(yīng)用;將接收的輸入事件發(fā)送至第一容器系統(tǒng)中對應(yīng)的應(yīng)用,由該應(yīng)用對輸入事件進行響應(yīng)處理。
S203:其它容器系統(tǒng)中的輸入服務(wù)模塊接收到輸入事件后,若檢測到其它容器系統(tǒng)處于后臺,則忽略輸入事件。
事實上,終端設(shè)備中通常只有一個容器系統(tǒng)可以位于前臺。因此,當上述步驟中檢測出第一容器系統(tǒng)位于前臺時,運行的其它容器系統(tǒng)實際上位于后臺。本步驟與上述步驟202實際上都是在第一容器系統(tǒng)位于前臺、且其它容器系統(tǒng)位于后臺的持續(xù)過程中執(zhí)行的。
具體地,對于每個運行的其它容器系統(tǒng),該其它容器系統(tǒng)中的輸入服務(wù)模塊接收到輸入事件后,檢測本輸入服務(wù)模塊所在的其它容器系統(tǒng)的運行狀態(tài)。當該輸入服務(wù)模塊檢測到其所在的其它容器系統(tǒng)位于后臺時,忽略接收到的輸入事件。
S204:第一容器系統(tǒng)中的顯示服務(wù)模塊接收到第一容器系統(tǒng)中至少一個應(yīng)用發(fā)送的待顯示的內(nèi)容后,若檢測到第一容器系統(tǒng)處于前臺,則將接收到的各應(yīng)用的待顯示的內(nèi)容,向內(nèi)核發(fā)送。
第一容器系統(tǒng)中的顯示服務(wù)模塊,接收到其所在的第一容器系統(tǒng)中至少一個應(yīng)用發(fā)送的待顯示的內(nèi)容后,檢測本輸入服務(wù)模塊所在的第一容器系統(tǒng)的運行狀態(tài)。其中,各應(yīng)用的待顯示的內(nèi)容,包括:桌面應(yīng)用的系統(tǒng)桌面、其它應(yīng)用各自的用戶界面。
當該輸入服務(wù)模塊檢測到第一容器系統(tǒng)位于前臺時,將接收到的各應(yīng)用的待顯示的內(nèi)容,向內(nèi)核中的顯示模塊發(fā)送。
較佳地,第一容器系統(tǒng)中的顯示服務(wù)模塊,根據(jù)第一容器系統(tǒng)中的系統(tǒng)桌面和各用戶界面在屏幕上的位置、大小和層疊順序,確定出系統(tǒng)桌面和各用戶界面的可視區(qū)域;對各可視區(qū)域進行合成,使得合成后的可視區(qū)域不超出屏幕的區(qū)域;將合成后的可視區(qū)域向內(nèi)核中的顯示模塊發(fā)送。
S205:其它容器系統(tǒng)中的顯示服務(wù)模塊檢測到其它容器系統(tǒng)處于后臺后,停止接收其它容器系統(tǒng)中應(yīng)用的待顯示的內(nèi)容。
事實上,終端設(shè)備中通常只有一個容器系統(tǒng)可以位于前臺。因此,當上述步驟中檢測出第一容器系統(tǒng)位于前臺時,運行的其它容器系統(tǒng)實際上位于后臺。本步驟與上述步驟204實際上都是在第一容器系統(tǒng)位于前臺、且其它容器系統(tǒng)位于后臺的持續(xù)過程中執(zhí)行的。
具體地,對于每個運行的其它容器系統(tǒng),該其它容器系統(tǒng)中的顯示服務(wù)模塊檢測本顯示服務(wù)模塊所在的其它容器系統(tǒng)的運行狀態(tài)。當該顯示服務(wù)模塊檢測到其所在的其它容器系統(tǒng)位于后臺時,停止接收該顯示服務(wù)模塊所在的其它容器系統(tǒng)中應(yīng)用的待顯示的內(nèi)容。
顯然,由于位于后臺的其它容器系統(tǒng)的待顯示內(nèi)容不會發(fā)送至內(nèi)核的顯示模塊,使得內(nèi)核的顯示模塊僅能接收到位于前臺的第一容器系統(tǒng)的待顯示的內(nèi)容,進而使得后續(xù)內(nèi)核中顯示模塊實際上僅對位于前臺的第一容器系統(tǒng)的內(nèi)容進行顯示輸出,解決了不同容器系統(tǒng)混亂顯示輸出的問題,可以提升用戶的體驗。
而且,內(nèi)核的顯示模塊不需要對位于后臺的其它容器系統(tǒng)的待顯示的內(nèi)容進行處理,大大減輕了內(nèi)核的顯示模塊的工作量。
S206:內(nèi)核中的顯示模塊對接收到的待顯示的內(nèi)容進行顯示輸出。
當內(nèi)核中的顯示模塊僅接收到位于前臺的第一容器系統(tǒng)的待顯示的內(nèi)容,而未接收位于后臺的其它容器系統(tǒng)的待顯示的內(nèi)容;因此內(nèi)核中的顯示模塊根據(jù)接收到的來自第一容器系統(tǒng)的待顯示的內(nèi)容進行顯示輸出,顯示輸出的具體方法為本領(lǐng)域技術(shù)人員所熟知,此處不再贅述。
事實上,上述步驟S201至步驟S203的組合,與步驟S204至步驟S206的組合之間是互相獨立的。本發(fā)明實施例一中,對于執(zhí)行步驟S201至步驟S203的組合、與步驟S204至步驟S206的組合,可以同時執(zhí)行該兩個組合,可以僅執(zhí)行其中一個組合,可以交替執(zhí)行,也可以執(zhí)行過程中各自的時間有部分交疊。
根據(jù)本發(fā)明實施例一中上述基于多系統(tǒng)的輸入輸出方法,本發(fā)明實施例一還提供了一種基于多系統(tǒng)的輸入輸出裝置,該裝置設(shè)置于本發(fā)明的終端設(shè)備內(nèi)部,該裝置的內(nèi)部結(jié)構(gòu)的框架示意圖如圖3所示,包括:內(nèi)核和兩個以上容器系統(tǒng)。
其中,內(nèi)核包括:輸入模塊301。輸入模塊301用于接收到輸入事件后,分別向兩個以上容器系統(tǒng)發(fā)送。
兩個以上容器系統(tǒng)中的第一容器系統(tǒng)包括:輸入服務(wù)模塊311。輸入服務(wù)模塊311用于接收到輸入事件后,若檢測到第一容器系統(tǒng)處于前臺,則將輸入事件發(fā)送至對應(yīng)的應(yīng)用。
兩個以上容器系統(tǒng)中的其它容器系統(tǒng)包括:輸入服務(wù)模塊321。
輸入服務(wù)模塊321用于接收到輸入事件后,若檢測到其它容器系統(tǒng)處于后臺,則忽略輸入事件。
較佳地,第一容器系統(tǒng),還包括:顯示服務(wù)模塊312。顯示服務(wù)模塊312用于接收到第一容器系統(tǒng)中至少一個應(yīng)用發(fā)送的待顯示的內(nèi)容后,若檢測到第一容器系統(tǒng)處于前臺,則將接收到的各應(yīng)用的待顯示的內(nèi)容,向內(nèi)核發(fā)送。
較佳地,兩個以上容器系統(tǒng)中的其它容器系統(tǒng)還包括:顯示服務(wù)模塊322。顯示服務(wù)模塊322用于檢測到其它容器系統(tǒng)處于后臺后,停止接收其它容器系統(tǒng)中應(yīng)用的待顯示的內(nèi)容。
以及,內(nèi)核還包括:顯示模塊302。顯示模塊302用于對接收到的待顯示的內(nèi)容進行顯示輸出。
事實上,當上述第一容器系統(tǒng)切換到后臺、且其它容器系統(tǒng)之一切換到前臺時,第一容器系統(tǒng)的輸入服務(wù)模塊311與位于前臺的其它容器系統(tǒng)的輸入服務(wù)模塊321的功能互換;第一容器系統(tǒng)的顯示服務(wù)模塊312與位于前臺的其它容器系統(tǒng)的顯示服務(wù)模塊322的功能互換。也就是說,實際上,輸入服務(wù)模塊311與輸入服務(wù)模塊321的功能相同,顯示服務(wù)模塊312與顯示服務(wù)模塊322的功能相同;標號不同僅代表屬于不同的容器系統(tǒng)而已。
本發(fā)明實施例一中,由各容器系統(tǒng)各自的輸入服務(wù)模塊檢測各容器系統(tǒng)的前后臺狀態(tài);由位于前臺的第一容器系統(tǒng)的輸入服務(wù)模塊獨占終端設(shè)備的輸入設(shè)備獲取輸入事件,并進行響應(yīng)??梢苑乐共煌萜飨到y(tǒng)對輸入事件進行誤響應(yīng)的混亂情況,保證用戶可以與其預(yù)期的容器系統(tǒng)(即為切換至前臺的第一容器系統(tǒng))進行交互,提升用戶的體驗。
而且,本發(fā)明實施例一中,位于前臺的第一容器系統(tǒng)的顯示服務(wù)模塊確定將第一容器系統(tǒng)待顯示的內(nèi)容通過內(nèi)核的顯示模塊發(fā)送至顯示設(shè)備進行顯示輸出,同時位于后臺的其它容器系統(tǒng)中的顯示服務(wù)模塊都確定忽略各自所在的其它容器系統(tǒng)的待顯示內(nèi)容。相當于位于前臺的第一容器系統(tǒng)的顯示服務(wù)模塊獨占終端設(shè)備的顯示設(shè)備進行顯示輸出,可以防止顯示設(shè)備在短時間內(nèi)交替輸出不同容器系統(tǒng)的內(nèi)容導(dǎo)致顯示混亂的情況,可以保證用戶可以觀看到其預(yù)期的容器系統(tǒng)的顯示內(nèi)容,與該用戶預(yù)期的容器系統(tǒng)進行交互,提升用戶的體驗。
進一步,本發(fā)明實施例一中,內(nèi)核可以直接采用linux kernel,僅對容器系統(tǒng)的框架層(例如其中的SurfaceFlinger模塊)進行修改即可。而且,不依賴具體的硬件平臺,使得本發(fā)明實施例一的跨平臺的移植性較佳。
此外,本發(fā)明實施例一中,內(nèi)核的顯示模塊不需要對位于后臺的其它容器系統(tǒng)的待顯示的內(nèi)容進行處理,大大減輕了內(nèi)核的顯示模塊的工作量,有利于降低功耗,延長終端設(shè)備的續(xù)航時間。
實施例二
本發(fā)明實施例二中的終端設(shè)備的內(nèi)部結(jié)構(gòu)的框架示意圖如圖4所示,包括:兩個以上容器系統(tǒng)、主控系統(tǒng)、顯示硬件和輸入硬件。
其中,本發(fā)明實施例二中的容器系統(tǒng),是設(shè)置在以Linux container(容器)虛擬化技術(shù)創(chuàng)建的容器中的操作系統(tǒng)。操作系統(tǒng)可以為傳統(tǒng)意義上的Linux操作系統(tǒng)或Unix操作系統(tǒng),也可以是基于Linux操作系統(tǒng)衍生出來的Android系統(tǒng)、Ubuntu系統(tǒng)等,還可以為以Windows平臺為基礎(chǔ)的win系統(tǒng)等等。實際上,本發(fā)明中的容器系統(tǒng)不限于前述例舉的操作系統(tǒng),可以涵蓋所有能夠在容器中運行的操作系統(tǒng)。為便于描述,下面以Android系統(tǒng)作為容器系統(tǒng)為例闡述本發(fā)明的技術(shù)方案。
本發(fā)明實施例二的容器系統(tǒng)中,包括:SurfaceFlinger(外觀投擲者)模塊和輸入模塊。SurfaceFlinger模塊和輸入模塊分別與容器系統(tǒng)中的多個應(yīng)用,又稱APP(Application,應(yīng)用程序)進行交互。
較佳地,為便于描述,本發(fā)明中將位于前臺的容器系統(tǒng)成為第一容器系統(tǒng);將位于后臺的容器系統(tǒng)統(tǒng)一稱為其它容器系統(tǒng)。
本發(fā)明實施例二中的主控系統(tǒng)包括:主控顯示模塊和主控輸入模塊。較佳地,主控顯示模塊可以是在傳統(tǒng)內(nèi)核中的顯示模塊的基礎(chǔ)上改進得到的。主控輸入模塊可以是在傳統(tǒng)內(nèi)核中的輸入模塊的基礎(chǔ)上改進得到的。因此,可以認為主控系統(tǒng)是在傳統(tǒng)內(nèi)核kernel基礎(chǔ)上改進得到的。
本發(fā)明實施例二中的容器系統(tǒng)中的SurfaceFlinger模塊、輸入模塊分別與主控系統(tǒng)中的主控顯示模塊、主控輸入模塊進行交互。進一步,圖4中的實線表示數(shù)據(jù)傳輸(數(shù)據(jù)交互的一種),虛線表示數(shù)據(jù)未傳輸(即未進行數(shù)據(jù)交互)。
本發(fā)明實施例二中的顯示硬件、輸入硬件分別與主控系統(tǒng)中的主控顯示模塊、主控輸入模塊進行交互。
下面介紹本發(fā)明實施例二的基于多系統(tǒng)的輸入輸出方法的流程示意圖如圖5所示,包括下述步驟:
S501:主控系統(tǒng)中的主控輸入模塊接收到輸入事件后,檢測本設(shè)備中兩個以上容器系統(tǒng)的前后臺狀態(tài),將輸入事件向位于前臺的容器系統(tǒng)發(fā)送。
主控系統(tǒng)中的主控輸入模塊,通過終端設(shè)備中的輸入硬件接收到用戶的輸入操作后,將用戶的輸入信息封裝為輸入事件,并檢測本終端設(shè)備中兩個以上容器系統(tǒng)中所有運行的容器系統(tǒng)的前后臺狀態(tài)。
主控系統(tǒng)中的主控輸入模塊將封裝的輸入事件,向位于前臺的第一容器系統(tǒng)發(fā)送。
事實上,終端設(shè)備中通常只有一個容器系統(tǒng)可以位于前臺。因此,當上述步驟中檢測出第一容器系統(tǒng)位于前臺時,運行的其它容器系統(tǒng)實際上位于后臺。主控系統(tǒng)中的主控輸入模塊不會將輸入事件向位于后臺的其它容器系統(tǒng)發(fā)送。
可見,本步驟中,主控輸入模塊省略了將輸入事件向位于后臺的容器系統(tǒng),節(jié)省了主控輸入模塊的工作負擔,有利于降低其功耗。
S502:當?shù)谝蝗萜飨到y(tǒng)中的輸入模塊接收到輸入事件后,將輸入事件發(fā)送至第一容器系統(tǒng)中對應(yīng)的應(yīng)用。
當?shù)谝蝗萜飨到y(tǒng)中的輸入模塊接收到來自主控系統(tǒng)的輸入事件后,確定出接收的輸入事件在第一容器系統(tǒng)中對應(yīng)的應(yīng)用,例如根據(jù)輸入事件中攜帶的應(yīng)用標識確定出對應(yīng)的應(yīng)用;將接收的輸入事件發(fā)送至第一容器系統(tǒng)中對應(yīng)的應(yīng)用,由該應(yīng)用對輸入事件進行響應(yīng)處理。
由于其它容器系統(tǒng)中的輸入模塊未接到來自主控系統(tǒng)的輸入事件,因此可以節(jié)省處理輸入事件的工作量,有利于降低其功耗。
S503:當?shù)谝蝗萜飨到y(tǒng)中的SurfaceFlinger模塊接收到第一容器系統(tǒng)中至少一個應(yīng)用發(fā)送的待顯示的內(nèi)容后,向主控系統(tǒng)發(fā)送。
當?shù)谝蝗萜飨到y(tǒng)中的SurfaceFlinger模塊,接收到其所在的第一容器系統(tǒng)中至少一個應(yīng)用發(fā)送的待顯示的內(nèi)容后,將接收到的各應(yīng)用的待顯示的內(nèi)容,向主控系統(tǒng)中的主控顯示模塊發(fā)送。其中,各應(yīng)用的待顯示的內(nèi)容,包括:桌面應(yīng)用的系統(tǒng)桌面、其它應(yīng)用各自的用戶界面。
較佳地,第一容器系統(tǒng)中的SurfaceFlinger模塊,根據(jù)第一容器系統(tǒng)中的系統(tǒng)桌面和各用戶界面在屏幕上的位置、大小和層疊順序,確定出系統(tǒng)桌面和各用戶界面的可視區(qū)域;對各可視區(qū)域進行合成,使得合成后的可視區(qū)域不超出屏幕的區(qū)域;將合成后的可視區(qū)域向主控系統(tǒng)中的主控顯示模塊發(fā)送。
S504:當其它容器系統(tǒng)中的SurfaceFlinger模塊接收到其它容器系統(tǒng)中至少一個應(yīng)用發(fā)送的待顯示的內(nèi)容后,向主控系統(tǒng)發(fā)送。
當其它容器系統(tǒng)中的SurfaceFlinger模塊,接收到其所在的其它容器系統(tǒng)中至少一個應(yīng)用發(fā)送的待顯示的內(nèi)容后,將接收到的各應(yīng)用的待顯示的內(nèi)容,向主控系統(tǒng)中的主控顯示模塊發(fā)送。其中,各應(yīng)用的待顯示的內(nèi)容,包括:桌面應(yīng)用的系統(tǒng)桌面、其它應(yīng)用各自的用戶界面。
較佳地,其它容器系統(tǒng)中的SurfaceFlinger模塊,根據(jù)其所在的其它容器系統(tǒng)中的系統(tǒng)桌面和各用戶界面在屏幕上的位置、大小和層疊順序,確定出系統(tǒng)桌面和各用戶界面的可視區(qū)域;對各可視區(qū)域進行合成,使得合成后的可視區(qū)域不超出屏幕的區(qū)域;將合成后的可視區(qū)域向主控系統(tǒng)中的主控顯示模塊發(fā)送。
S505:主控系統(tǒng)中的主控顯示模塊接收到來自第一容器系統(tǒng)和其它容器系統(tǒng)的待顯示的內(nèi)容后,檢測第一容器系統(tǒng)和其它容器系統(tǒng)的前后臺狀態(tài)。
主控系統(tǒng)中的主控顯示模塊分別接收到來自第一容器系統(tǒng)的SurfaceFlinger模塊、和其它容器系統(tǒng)的SurfaceFlinger模塊所各自發(fā)送的待顯示的內(nèi)容后,檢測第一容器系統(tǒng)、和發(fā)送待顯示的內(nèi)容的其它容器系統(tǒng)各自的前后臺狀態(tài)。
S506:主控顯示模塊若檢測出第一容器系統(tǒng)、其它容器系統(tǒng)分別處于前、后臺,則對來自第一容器系統(tǒng)的待顯示的內(nèi)容進行顯示輸出,并忽略來自其它容器系統(tǒng)的待顯示的內(nèi)容。
事實上,終端設(shè)備中通常只有一個容器系統(tǒng)可以位于前臺。因此,當檢測出第一容器系統(tǒng)位于前臺時,運行的其它容器系統(tǒng)實際上都位于后臺。
主控顯示模塊檢測出第一容器系統(tǒng)、其它容器系統(tǒng)分別處于前、后臺之后,對來自第一容器系統(tǒng)的待顯示的內(nèi)容進行顯示輸出,并忽略來自其它容器系統(tǒng)的待顯示的內(nèi)容。
事實上,上述步驟S501至步驟S502的組合,與步驟S503至步驟S506的組合之間是互相獨立的。本發(fā)明實施例一中,對于執(zhí)行步驟S501至步驟S502的組合、與步驟S503至步驟S506的組合,可以同時執(zhí)行該兩個組合,可以僅執(zhí)行其中一個組合,可以交替執(zhí)行,也可以執(zhí)行過程中各自的時間有部分交疊。
根據(jù)本發(fā)明實施例二中上述基于多系統(tǒng)的輸入輸出方法,本發(fā)明實施例二還提供了一種基于多系統(tǒng)的輸入輸出裝置,該裝置設(shè)置于本發(fā)明的終端設(shè)備內(nèi)部,該裝置的內(nèi)部結(jié)構(gòu)的框架示意圖如圖6所示,包括:主控系統(tǒng)和兩個以上容器系統(tǒng)。
其中,主控系統(tǒng)包括:主控輸入模塊601。
主控輸入模塊601用于接收到輸入事件后,檢測本設(shè)備中兩個以上容器系統(tǒng)的前后臺狀態(tài),將輸入事件向位于前臺的容器系統(tǒng)發(fā)送。
兩個以上容器系統(tǒng)中的第一容器系統(tǒng)包括:輸入模塊611。
輸入模塊611用于當接收到輸入事件后,將輸入事件發(fā)送至第一容器系統(tǒng)中對應(yīng)的應(yīng)用。
實際上,兩個以上容器系統(tǒng)中的其它容器系統(tǒng)包括:輸入模塊621。此時,輸入模塊621所在的其它容器系統(tǒng)位于后臺,接收不到輸入事件。
較佳地,第一容器系統(tǒng)還包括:SurfaceFlinger模塊612。SurfaceFlinger模塊612用于接收到第一容器系統(tǒng)中至少一個應(yīng)用發(fā)送的待顯示的內(nèi)容后,向主控系統(tǒng)發(fā)送。
以及,兩個以上容器中除第一容器系統(tǒng)之外的其它容器系統(tǒng),包括:SurfaceFlinger模塊622。SurfaceFlinger模塊622用于接收到其它容器系統(tǒng)中至少一個應(yīng)用發(fā)送的待顯示的內(nèi)容后,向主控系統(tǒng)發(fā)送;
以及主控系統(tǒng)還包括:主控顯示模塊602。主控顯示模塊602用于接收到來自第一容器系統(tǒng)和其它容器系統(tǒng)的待顯示的內(nèi)容后,檢測第一容器系統(tǒng)和其它容器系統(tǒng)的前后臺狀態(tài);若檢測出第一容器系統(tǒng)、其它容器系統(tǒng)分別處于前、后臺,則對來自第一容器系統(tǒng)的待顯示的內(nèi)容進行顯示輸出,并忽略來自其它容器系統(tǒng)的待顯示的內(nèi)容。
事實上,第一容器系統(tǒng)的輸入模塊611與其它容器系統(tǒng)的輸入服務(wù)模塊321的功能一致;第一容器系統(tǒng)的顯示模塊612與其它容器系統(tǒng)的顯示服務(wù)模塊322的功能一致。不同的標號僅代表屬于不同的容器系統(tǒng)而已。
本發(fā)明實施例二中,由主控系統(tǒng)中的主控輸入模塊統(tǒng)檢測各容器系統(tǒng)的前后臺狀態(tài),將接收的輸入事件僅向位于前臺的第一容器系統(tǒng)發(fā)送,而不向位于后臺的其它容器系統(tǒng)發(fā)送,相當于第一容器系統(tǒng)獨占輸入設(shè)備對輸入事件進行響應(yīng)??梢苑乐共煌萜飨到y(tǒng)對輸入事件進行誤響應(yīng)的混亂情況,保證用戶可以與其預(yù)期的容器系統(tǒng)(即為切換至前臺的第一容器系統(tǒng))進行交互,提升用戶的體驗。
而且,本發(fā)明實施例二中,在位于前臺的第一容器系統(tǒng)和位于后臺的其它容器系統(tǒng)都向主控系統(tǒng)的主控顯示模塊發(fā)送待顯示的內(nèi)容的情況下,由主控顯示模塊確定僅將位于前臺的第一容器系統(tǒng)的待顯示的內(nèi)容,發(fā)送至顯示設(shè)備進行顯示,而忽略位于后臺的其它容器系統(tǒng)的待顯示的內(nèi)容;相當于位于前臺的第一容器系統(tǒng)獨占終端設(shè)備的顯示設(shè)備進行顯示輸出,可以防止顯示設(shè)備在短時間內(nèi)交替輸出不同容器系統(tǒng)的內(nèi)容導(dǎo)致顯示混亂的情況,可以保證用戶可以觀看到其預(yù)期的容器系統(tǒng)的顯示內(nèi)容,與該用戶預(yù)期的容器系統(tǒng)進行交互,提升用戶的體驗。
進一步,本發(fā)明實施例二中,僅需要修改linux的內(nèi)核kernel得到主控系統(tǒng),而無需修改容器系統(tǒng);增強了兼容性,并且便于擴展容器系統(tǒng)的數(shù)量;例如從雙容器系統(tǒng)擴展到三容器系統(tǒng),無需對新增的容器系統(tǒng)的代碼進行修改,新創(chuàng)建一個容器,在該容器中安裝新增的容器系統(tǒng)即可。
此外,本發(fā)明實施例二中,主控系統(tǒng)不向位于后臺的其它容器系統(tǒng)發(fā)送輸入事件,因此位于后臺的其它容器系統(tǒng)無需對額外的不需要其響應(yīng)的輸入事件進行處理,減輕了其它容器系統(tǒng)的工作量,有利于降低功耗,延長終端設(shè)備的續(xù)航時間。
本技術(shù)領(lǐng)域技術(shù)人員可以理解,本發(fā)明包括涉及用于執(zhí)行本申請中所述操作中的一項或多項的設(shè)備。這些設(shè)備可以為所需的目的而專門設(shè)計和制造,或者也可以包括通用計算機中的已知設(shè)備。這些設(shè)備具有存儲在其內(nèi)的計算機程序,這些計算機程序選擇性地激活或重構(gòu)。這樣的計算機程序可以被存儲在設(shè)備(例如,計算機)可讀介質(zhì)中或者存儲在適于存儲電子指令并分別耦聯(lián)到總線的任何類型的介質(zhì)中,所述計算機可讀介質(zhì)包括但不限于任何類型的盤(包括軟盤、硬盤、光盤、CD-ROM、和磁光盤)、ROM(Read-Only Memory,只讀存儲器)、RAM(Random Access Memory,隨即存儲器)、EPROM(Erasable Programmable Read-Only Memory,可擦寫可編程只讀存儲器)、EEPROM(Electrically Erasable Programmable Read-Only Memory,電可擦可編程只讀存儲器)、閃存、磁性卡片或光線卡片。也就是,可讀介質(zhì)包括由設(shè)備(例如,計算機)以能夠讀的形式存儲或傳輸信息的任何介質(zhì)。
本技術(shù)領(lǐng)域技術(shù)人員可以理解,可以用計算機程序指令來實現(xiàn)這些結(jié)構(gòu)圖和/或框圖和/或流圖中的每個框以及這些結(jié)構(gòu)圖和/或框圖和/或流圖中的框的組合。本技術(shù)領(lǐng)域技術(shù)人員可以理解,可以將這些計算機程序指令提供給通用計算機、專業(yè)計算機或其他可編程數(shù)據(jù)處理方法的處理器來實現(xiàn),從而通過計算機或其他可編程數(shù)據(jù)處理方法的處理器來執(zhí)行本發(fā)明公開的結(jié)構(gòu)圖和/或框圖和/或流圖的框或多個框中指定的方案。
本技術(shù)領(lǐng)域技術(shù)人員可以理解,本發(fā)明中已經(jīng)討論過的各種操作、方法、流程中的步驟、措施、方案可以被交替、更改、組合或刪除。進一步地,具有本發(fā)明中已經(jīng)討論過的各種操作、方法、流程中的其他步驟、措施、方案也可以被交替、更改、重排、分解、組合或刪除。進一步地,現(xiàn)有技術(shù)中的具有與本發(fā)明中公開的各種操作、方法、流程中的步驟、措施、方案也可以被交替、更改、重排、分解、組合或刪除。
以上所述僅是本發(fā)明的部分實施方式,應(yīng)當指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應(yīng)視為本發(fā)明的保護范圍。