本發(fā)明涉及視頻技術(shù)領(lǐng)域,特別涉及一種虛擬現(xiàn)實(shí)VR設(shè)備及其用戶界面(User Interface,簡稱UI)事件的處理方法。
背景技術(shù):
虛擬現(xiàn)實(shí)(Virtual Reality,簡稱VR)技術(shù)是仿真技術(shù)的一個(gè)重要方向,是仿真技術(shù)與計(jì)算機(jī)圖形學(xué)人機(jī)接口技術(shù)、多媒體技術(shù)、傳感技術(shù)、網(wǎng)絡(luò)技術(shù)等多種技術(shù)的集合,是一門富有挑戰(zhàn)性的交叉技術(shù)前沿學(xué)科和研究領(lǐng)域。虛擬現(xiàn)實(shí)技術(shù)主要包括模擬環(huán)境、感知、自然技能和傳感設(shè)備等方面。
隨著虛擬現(xiàn)實(shí)技術(shù)的不斷發(fā)展,虛擬現(xiàn)實(shí)頭戴顯示器設(shè)備得到了極大的應(yīng)用,虛擬現(xiàn)實(shí)頭戴顯示器設(shè)備簡稱VR設(shè)備或VR頭顯或VR眼鏡,利用VR設(shè)備將用戶對外界的視覺封閉,引導(dǎo)用戶產(chǎn)生一種身在虛擬環(huán)境中的感覺,能夠提供給用戶立體真實(shí)的視覺效果。
目前,VR設(shè)備可分為三類:外接式頭戴設(shè)備、一體式頭戴設(shè)備、以及移動(dòng)端頭顯設(shè)備。其中,外接式頭戴設(shè)備具備獨(dú)立屏幕,產(chǎn)品結(jié)構(gòu)復(fù)雜;一體式頭戴設(shè)備,也叫VR一體機(jī),無需借助任何輸入輸出設(shè)備就可以呈現(xiàn)虛擬現(xiàn)實(shí)的視覺效果;移動(dòng)端頭顯設(shè)備,需要借助外接設(shè)備(如手機(jī)),將外接設(shè)備中的虛擬現(xiàn)實(shí)的視覺效果呈現(xiàn)給用戶,結(jié)構(gòu)簡單。
VR設(shè)備中如何處理用戶觸發(fā)的UI事件,目前還沒有解決方案。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供了一種虛擬現(xiàn)實(shí)VR設(shè)備及其UI事件的處理方法,解決了現(xiàn)有VR設(shè)備中如何處理用戶觸發(fā)的UI事件,目前還沒有解決方案的問題。
針對現(xiàn)有技術(shù)存在的問題,本發(fā)明實(shí)施例提供了一種虛擬現(xiàn)實(shí)VR設(shè)備中UI事件的處理方法,包括:
VR設(shè)備在VR應(yīng)用啟動(dòng)后,通過所述VR應(yīng)用的VR主線程接收UI事件;
所述VR設(shè)備通過所述VR應(yīng)用中的VR子線程處理所述UI事件。
針對現(xiàn)有技術(shù)存在的問題,本發(fā)明實(shí)施例提供了一種計(jì)算機(jī)可讀存儲介質(zhì),其中存儲有可執(zhí)行的程序代碼,該程序代碼用以實(shí)現(xiàn)上述的方法。
針對現(xiàn)有技術(shù)存在的問題,本發(fā)明實(shí)施例提供了虛擬現(xiàn)實(shí)VR設(shè)備,所述設(shè)備包括:
第一處理模塊,用于在VR應(yīng)用啟動(dòng)后,通過所述VR應(yīng)用的VR主線程接收UI事件;
第二處理模塊,用于通過所述VR應(yīng)用中的VR子線程處理所述UI事件。
本發(fā)明實(shí)施例提供一種虛擬現(xiàn)實(shí)VR設(shè)備及其UI事件的處理方法中,由于在VR應(yīng)用中定義了VR主線程,以使VR應(yīng)用啟動(dòng)后,VR設(shè)備可以通過所述VR主線程直接接收用戶觸發(fā)的UI事件;由于在VR應(yīng)用中定義了VR子線程,以使VR設(shè)備在通過所述VR主線程接收到UI事件后,可以通過所述VR子線程處理該UI事件,從而實(shí)現(xiàn)了在VR設(shè)備中處理UI事件。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例提供的一種虛擬現(xiàn)實(shí)VR設(shè)備中UI事件的處理方法的流程示意圖;
圖2為本發(fā)明實(shí)施例提供的一種虛擬現(xiàn)實(shí)VR設(shè)備的示意圖。
具體實(shí)施方式
為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
本發(fā)明實(shí)施例中提及的“多個(gè)”是指兩個(gè)或兩個(gè)以上?!昂?或”,描述關(guān)聯(lián)對象的關(guān)聯(lián)關(guān)系,表示可以存在三種關(guān)系,例如,A和/或B,可以表示:單獨(dú)存在A,同時(shí)存在A和B,單獨(dú)存在B這三種情況。
下面結(jié)合說明書附圖對本發(fā)明實(shí)施例作進(jìn)一步詳細(xì)描述。應(yīng)當(dāng)理解,此處所描述的實(shí)施例僅用于說明和解釋本發(fā)明,并不用于限定本發(fā)明。
圖1所示的實(shí)施例中,提供了一種虛擬現(xiàn)實(shí)VR設(shè)備中用戶界面UI事件的處理方法該方法包括:
步驟11、VR設(shè)備在VR應(yīng)用啟動(dòng)后,通過所述VR應(yīng)用的VR主線程接收UI事件。
其中,所述UI事件包括但不限于以下事件中的至少一種:
按鍵事件(KeyEvent)、觸摸事件(MotionEvent)。
舉例說明,用戶可以通過按動(dòng)VR設(shè)備提供的按鍵,觸發(fā)UI事件;還可以通過觸摸VR設(shè)備提供的觸控區(qū)域,觸發(fā)UI事件。
步驟12、所述VR設(shè)備通過所述VR應(yīng)用中的VR子線程處理所述UI事件。
本發(fā)明實(shí)施例中,由于在VR應(yīng)用中定義了VR主線程,以使VR應(yīng)用啟動(dòng)后,VR設(shè)備可以通過所述VR主線程直接接收用戶觸發(fā)的UI事件;由于在VR應(yīng)用中定義了VR子線程,以使VR設(shè)備在通過所述VR主線程接收到UI事件后,可以通過所述VR子線程處理該UI事件,從而實(shí)現(xiàn)了在VR設(shè)備中處理UI事件。
本發(fā)明實(shí)施例中,VR應(yīng)用中定義一個(gè)VR主線程。
本發(fā)明實(shí)施例中,VR應(yīng)用中定義至少一個(gè)VR子線程,用于處理VR應(yīng)用運(yùn)行過程中生成的不同UI事件。例如,對于VR應(yīng)用中的界面顯示,由用于負(fù)責(zé)顯示的VR子線程來處于界面顯示過程中生成的UI事件。又如,對于VR應(yīng)用中的視頻播放,則由用于負(fù)責(zé)視頻播放的VR子線程來處于視頻播放過程中生成的UI事件。
基于上述任一實(shí)施例,一種可能的實(shí)施方式中,S11中所述VR設(shè)備通過所述VR應(yīng)用的VR主線程接收UI事件之后,所述方法還包括:
所述VR設(shè)備將所述UI事件,緩存在所述VR主線程中;
所述VR設(shè)備通過所述VR主線程,將所述UI事件透傳給所述VR子線程,其中,所述UI事件按照先入先出(First Input First Output)的方式透傳。
該方式中,所述VR設(shè)備通過所述VR主線程,將所述UI事件透傳給所述VR子線程。相應(yīng)的,所述VR子線程在接收到所述VR設(shè)備通過所述VR主線程發(fā)送的UI事件后,對所述UI事件進(jìn)行相應(yīng)的處理。其中,所述VR主線程不對接收到的UI事件進(jìn)行解析或處理,只需緩存接收到的UI事件并按照先入先出的方式透傳給VR子線程。
其中,先入先出的方式是指先緩存到所述VR主線程中的UI事件,先透傳給所述VR子線程。
舉例說明,在VR應(yīng)用啟動(dòng)后,VR設(shè)備將通過所述VR應(yīng)用的VR主線程接收到的第一個(gè)事件(記為事件1)緩存至所述VR主線程的隊(duì)列中的第一個(gè)位置,將通過所述VR應(yīng)用的VR主線程接收到的第二個(gè)事件(記為事件2)緩存至所述VR主線程的隊(duì)列中的第二個(gè)位置,依此類推。所述VR設(shè)備通過所述VR主線程先將事件1透傳給所述VR應(yīng)用的VR子線程,此時(shí),事件2移至所述隊(duì)列中的第一個(gè)位置,事件3移至所述隊(duì)列中的第二個(gè)位置,依此類推;再將事件2透傳給所述VR應(yīng)用的VR子線程,此時(shí),事件3移至所述隊(duì)列中的第一個(gè)位置,事件4移至所述隊(duì)列中的第二個(gè)位置,依此類推。
需要說明的是,在所述VR主線程中緩存UI事件和通過所述VR主線程透傳已緩存的UI事件是并行進(jìn)行的。
該方式中,若所述VR應(yīng)用中包括至少兩個(gè)VR子線程,所述VR設(shè)備通過所述VR主線程,將所述UI事件透傳給所述VR子線程時(shí),可以采用以下方式實(shí)現(xiàn):
方式1、所述VR設(shè)備從所述至少兩個(gè)VR子線程中,確定能夠處理所述UI事件的VR子線程;以及所述VR設(shè)備通過所述VR主線程,將所述UI事件透傳給所確定的VR子線程。
方式1中在通過所述VR主線程透傳UI事件之前,所述VR設(shè)備先確定能夠處理該UI事件的VR子線程,通過所述VR主線程將該UI事件僅透傳給能夠處理該UI事件的VR子線程,降低了VR主線程與VR子線程之間的信令開銷。
基于上述實(shí)施例,一種可能的實(shí)施方式中,S11中所述VR設(shè)備通過所述VR應(yīng)用的VR主線程接收UI事件之后,所述方法還包括:
所述VR設(shè)備將所述UI事件,緩存在所述VR主線程中;
所述VR設(shè)備通過所述VR子線程,按照先入先出的方式,讀取所述VR主線程緩存的UI事件。
該方式中,所述VR設(shè)備在所述VR主線程的隊(duì)列中緩存UI事件,由所述VR子線程從所述VR主線程的隊(duì)列中按照先入先出的方式,讀取UI事件,并進(jìn)行相應(yīng)的處理。
該方式中,所述VR子線程每讀取一個(gè)UI事件,先判斷是否需要處理該UI事件;若是,則處理該UI事件;若否,則忽略該UI事件。
該方式中,可選的,若VR子線程的數(shù)量為多個(gè),則所述VR設(shè)備通過當(dāng)前運(yùn)行的VR子線程,按照先入先出的方式,讀取所述VR主線程緩存的UI事件。
本發(fā)明實(shí)施例中涉及的VR設(shè)備可以為外接式頭戴設(shè)備、一體式頭戴設(shè)備、或者移動(dòng)端頭顯設(shè)備。本發(fā)明實(shí)施例不對VR設(shè)備的具體結(jié)構(gòu)進(jìn)行限定。
上述方法處理流程可以用軟件程序?qū)崿F(xiàn),該軟件程序可以存儲在存儲介質(zhì)中,當(dāng)存儲的軟件程序被調(diào)用時(shí),執(zhí)行上述方法步驟。
基于同一發(fā)明構(gòu)思,圖2所示的實(shí)施例中,提供了一種虛擬現(xiàn)實(shí)VR設(shè)備,由于該設(shè)備解決問題的原理與圖1所示的方法實(shí)施例相似,因此該設(shè)備的實(shí)施可以參見方法的實(shí)施,重復(fù)之處不再贅述。圖2所示的VR設(shè)備,包括:
第一處理模塊21,用于在VR應(yīng)用啟動(dòng)后,通過所述VR應(yīng)用的VR主線程接收UI事件;
第二處理模塊22,用于通過所述VR應(yīng)用中的VR子線程處理所述UI事件。
一種可能的實(shí)施方式中,所述第一處理模塊還用于:
將所述UI事件,緩存在所述VR主線程中;
通過所述VR主線程,將所述UI事件透傳給所述VR子線程,其中,所述UI事件按照先入先出的方式透傳。
一種可能的實(shí)施方式中,若所述VR應(yīng)用中包括至少兩個(gè)VR子線程,所述第一處理模塊具體用于:
從所述至少兩個(gè)VR子線程中,確定能夠處理所述UI事件的VR子線程;以及所述VR設(shè)備通過所述VR主線程,將所述UI事件透傳給所確定的VR子線程。
一種可能的實(shí)施方式中,所述第一處理模塊還用于:
將所述UI事件,緩存在所述VR主線程中;
通過所述VR子線程,按照先入先出的方式,讀取所述VR主線程緩存的UI事件。
一種可能的實(shí)施方式中,所述UI事件包括按鍵事件和/或觸摸事件
以上所描述的裝置實(shí)施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部模塊來實(shí)現(xiàn)本實(shí)施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性的勞動(dòng)的情況下,即可以理解并實(shí)施。
以上所描述的裝置實(shí)施例中,第一處理模塊21和第二處理模塊22是以功能模塊的形式來呈現(xiàn)。這里的“模塊”可以指特定應(yīng)用集成電路(application-specific integrated circuit,ASIC),電路,執(zhí)行一個(gè)或多個(gè)軟件或固件程序的處理器和存儲器,集成邏輯電路,和/或其他可以提供上述功能的器件。在一個(gè)簡單的實(shí)施例中,本領(lǐng)域的技術(shù)人員可以想到第一處理模塊21可以通過具有計(jì)算和邏輯處理功能的處理器、存儲器和輸入/輸出接口來實(shí)現(xiàn),第二處理模塊22可以通過具有計(jì)算和邏輯處理功能的處理器、存儲器和輸入/輸出接口來實(shí)現(xiàn)。
通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到各實(shí)施方式可借助軟件加必需的通用硬件平臺的方式來實(shí)現(xiàn),當(dāng)然也可以通過硬件。基于這樣的理解,上述技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品可以存儲在計(jì)算機(jī)可讀存儲介質(zhì)中,如ROM/RAM、磁碟、光盤等,包括若干指令用以使得一臺計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的方法。
最后應(yīng)說明的是:以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和范圍。