本申請涉及視頻直播技術(shù)領(lǐng)域,尤其涉及一種安卓(android)應(yīng)用中支持unity的數(shù)據(jù)處理方法及裝置。
背景技術(shù):
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,基于互聯(lián)網(wǎng)的直播技術(shù)越來越廣泛。用戶界面(userinterface,ui)是開發(fā)直播應(yīng)用的重要環(huán)節(jié),好的ui可以提高直播效果,增進(jìn)用戶與主播之間的互動性,提升直播房間的人氣,增加直播應(yīng)用的用戶流量。
在現(xiàn)有技術(shù)的基礎(chǔ)上,如何進(jìn)一步開發(fā)更加豐富多彩、支持更酷更炫動畫效果的ui是開發(fā)直播應(yīng)用急需解決的問題。
技術(shù)實(shí)現(xiàn)要素:
面對直播應(yīng)用開發(fā)過程中急需解決的問題,本申請發(fā)明人經(jīng)過反復(fù)思考和研究提出一種解決思路,即在直播應(yīng)用中融合unity,利用unity實(shí)現(xiàn)直播應(yīng)用中的ui。其中,unity是一種跨平臺可視化的游戲引擎,主要用于開發(fā)游戲。
直播應(yīng)用除了包括ui,還包括與ui互訪的底層業(yè)務(wù)邏輯。在一種應(yīng)用場景中,底層業(yè)務(wù)邏輯基于android實(shí)現(xiàn)。基于此,在直播應(yīng)用中融合unity,實(shí)際上是unity與android之間的融合,這就需要解決基于android實(shí)現(xiàn)的底層業(yè)務(wù)邏輯與基于unity實(shí)現(xiàn)的ui之間互訪的問題。
針對上述技術(shù)問題,本申請發(fā)明人想到將unity開發(fā)的工程封裝為android模塊,即aar模塊,從而解決基于android實(shí)現(xiàn)的底層業(yè)務(wù)邏輯與基于unity實(shí)現(xiàn)的ui之間互訪的問題。
其中,aar模塊內(nèi)部如何進(jìn)行數(shù)據(jù)處理,成為另一問題。對此,本申請實(shí)施例提供一種android應(yīng)用中支持unity的數(shù)據(jù)處理方法,該方法適用于所述android應(yīng)用中基于unity封裝成的aar模塊,所述aar模塊包括android層和unity層;所述方法包括:
所述android層按照預(yù)設(shè)數(shù)據(jù)格式對來自所述aar模塊外部的消息進(jìn)行組裝,以形成字符串;
所述android層通過所述android層內(nèi)部面向所述unity層的數(shù)據(jù)傳輸函數(shù)將所述字符串傳入所述unity層;
所述unity層通過所述unity層內(nèi)部面向所述android層的數(shù)據(jù)接收函數(shù)接收所述字符串;
所述unity層按照所述預(yù)設(shè)數(shù)據(jù)格式對所述字符串進(jìn)行解析,以獲得所述字符串包含的命令號和數(shù)據(jù)內(nèi)容;
所述unity層根據(jù)所述命令號所標(biāo)識的處理方式,對所述數(shù)據(jù)內(nèi)容進(jìn)行相應(yīng)處理。
在一可選實(shí)施方式中,所述android應(yīng)用為直播應(yīng)用;所述aar模塊用于構(gòu)建所述直播應(yīng)用的直播間界面。
在一可選實(shí)施方式中,所述android層按照預(yù)設(shè)數(shù)據(jù)格式對來自所述aar模塊外部的消息進(jìn)行組裝,以形成字符串之前,還包括:
所述android層監(jiān)聽所述直播間界面上的事件;
當(dāng)監(jiān)聽到指定事件時(shí),所述android層從所述直播應(yīng)用的服務(wù)端和/或所述直播應(yīng)用的主程序,獲取所述指定事件關(guān)聯(lián)的消息。
在一可選實(shí)施方式中,所述字符串包含的命令號為指示開啟彈幕的命令號;所述字符串包含的數(shù)據(jù)內(nèi)容為彈幕消息;或者
所述字符串包含的命令號為指示贈送禮物的命令號;所述字符串包含的數(shù)據(jù)內(nèi)容為用戶贈送給主播的虛擬禮物以及展示虛擬禮物的動效方式;或者
所述字符串包含的命令號為指示用戶升級的命令號;所述字符串包含的數(shù)據(jù)內(nèi)容為升級后的用戶等級信息;或者
所述字符串包含的命令號為指示主播升級的命令號;所述字符串包含的數(shù)據(jù)內(nèi)容為升級后的主播等級信息;或者
所述字符串包含的命令號為指示直播間封禁的命令號;所述字符串包含的數(shù)據(jù)內(nèi)容為關(guān)閉直播間的指示信息;或者
所述字符串包含的命令號為指示變更在線人數(shù)的命令號;所述字符串包含的數(shù)據(jù)內(nèi)容為新的在線人數(shù)。
在一可選實(shí)施方式中,所述unity層根據(jù)所述命令號所標(biāo)識的處理方式,對所述數(shù)據(jù)內(nèi)容進(jìn)行相應(yīng)處理,包括以下至少一種:
若所述命令號指示開啟彈幕,則在所述直播間界面上展示所述彈幕消息;
若所述命令號指示贈送禮物,則在所述直播間界面上,以所述動效方式展示所述用戶贈送給主播的虛擬禮物;
若所述命令號指示用戶升級,則將所述直播間界面上顯示的用戶等級信息變更為所述升級后的用戶等級信息;
若所述命令號指示主播升級,則將所述直播間界面上顯示的主播等級信息變更為所述升級后的主播等級信息;
若所述命令號指示直播間封禁,則根據(jù)所述關(guān)閉直播間的指示信息,關(guān)閉所述直播間界面;
若所述命令號指示變更在線人數(shù),則將所述直播間界面上顯示的在線人數(shù)變更為所述新的在線人數(shù)。
在一可選實(shí)施方式中,所述方法還包括:
在支持安卓的開發(fā)環(huán)境中,創(chuàng)建一模塊類型的android工程;
將unity工程中的資源文件全部復(fù)制到所述android工程中;
修改所述android工程中啟動activity的基類為unityplayeractivity;
編譯所述android工程,以輸出繼承所述unity工程全部特性的所述aar模塊。
相應(yīng)地,本申請實(shí)施例還提供一種android應(yīng)用中支持unity的數(shù)據(jù)處理裝置,所述數(shù)據(jù)處理裝置為所述android應(yīng)用中基于unity封裝成的aar模塊,所述aar模塊包括android子模塊和unity子模塊;
所述android子模塊包括:
組裝單元,用于按照預(yù)設(shè)數(shù)據(jù)格式對來自所述aar模塊外部的消息進(jìn)行組裝,以形成字符串;
傳輸單元,用于通過所述android子模塊內(nèi)部面向所述unity子模塊的數(shù)據(jù)傳輸函數(shù)將所述字符串傳入所述unity子模塊;
所述unity子模塊包括:
接收單元,用于通過所述unity子模塊內(nèi)部面向所述android子模塊的數(shù)據(jù)接收函數(shù)接收所述字符串;
解析單元,用于按照所述預(yù)設(shè)數(shù)據(jù)格式對所述字符串進(jìn)行解析,以獲得所述字符串包含的命令號和數(shù)據(jù)內(nèi)容;
處理單元,用于根據(jù)所述命令號所標(biāo)識的處理方式,對所述數(shù)據(jù)內(nèi)容進(jìn)行相應(yīng)處理。
在一可選實(shí)施方式中,所述android應(yīng)用為直播應(yīng)用;所述aar模塊用于構(gòu)建所述直播應(yīng)用的直播間界面。
在一可選實(shí)施方式中,所述android子模塊還包括:
監(jiān)聽單元,用于監(jiān)聽所述直播間界面上的事件;
獲取單元,用于在所述監(jiān)聽單元監(jiān)聽到指定事件時(shí),從所述直播應(yīng)用的服務(wù)端和/或所述直播應(yīng)用的主程序,獲取所述指定事件關(guān)聯(lián)的消息。
在一可選實(shí)施方式中,所述字符串包含的命令號為指示開啟彈幕的命令號;所述字符串包含的數(shù)據(jù)內(nèi)容為彈幕消息;所述處理單元具體用于:在所述直播間界面上展示所述彈幕消息;或者
所述字符串包含的命令號為指示贈送禮物的命令號;所述字符串包含的數(shù)據(jù)內(nèi)容為用戶贈送給主播的虛擬禮物以及展示虛擬禮物的動效方式;所述處理單元具體用于:在所述直播間界面上,以所述動效方式展示所述用戶贈送給主播的虛擬禮物;或者
所述字符串包含的命令號為指示用戶升級的命令號;所述字符串包含的數(shù)據(jù)內(nèi)容為升級后的用戶等級信息;所述處理單元具體用于:將所述直播間界面上顯示的用戶等級信息變更為所述升級后的用戶等級信息;或者
所述字符串包含的命令號為指示主播升級的命令號;所述字符串包含的數(shù)據(jù)內(nèi)容為升級后的主播等級信息;所述處理單元具體用于:將所述直播間界面上顯示的主播等級信息變更為所述升級后的主播等級信息;或者
所述字符串包含的命令號為指示直播間封禁的命令號;所述字符串包含的數(shù)據(jù)內(nèi)容為關(guān)閉直播間的指示信息;所述處理單元具體用于:根據(jù)所述關(guān)閉直播間的指示信息,關(guān)閉所述直播間界面;或者
所述字符串包含的命令號為指示變更在線人數(shù)的命令號;所述字符串包含的數(shù)據(jù)內(nèi)容為新的在線人數(shù);所述處理單元具體用于:將所述直播間界面上顯示的在線人數(shù)變更為所述新的在線人數(shù)。
在本申請實(shí)施例中,將unity實(shí)現(xiàn)的代碼封裝成aar模塊,并提供了aar模塊內(nèi)部的數(shù)據(jù)處理方式,為unity與android的結(jié)合提供了條件,使得可以利用unity開發(fā)android應(yīng)用的界面,為android應(yīng)用提供豐富多彩的界面,提高android應(yīng)用的界面的友好程度。
附圖說明
此處所說明的附圖用來提供對本申請的進(jìn)一步理解,構(gòu)成本申請的一部分,本申請的示意性實(shí)施例及其說明用于解釋本申請,并不構(gòu)成對本申請的不當(dāng)限定。在附圖中:
圖1為本申請一實(shí)施例提供的android應(yīng)用中支持unity的數(shù)據(jù)處理方法的流程示意圖;
圖2為本申請另一實(shí)施例提供的android應(yīng)用中支持unity的數(shù)據(jù)處理方法的流程示意圖;
圖3為本申請又一實(shí)施例提供的android應(yīng)用中支持unity的數(shù)據(jù)處理裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
為使本申請的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本申請具體實(shí)施例及相應(yīng)的附圖對本申請技術(shù)方案進(jìn)行清楚、完整地描述。顯然,所描述的實(shí)施例僅是本申請一部分實(shí)施例,而不是全部的實(shí)施例。基于本申請中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本申請保護(hù)的范圍。
為了在基于android開發(fā)的應(yīng)用(簡稱為android應(yīng)用)中,提供更加豐富多彩、支持更酷更炫動畫效果的界面,本申請發(fā)明人想到利用unity開發(fā)android應(yīng)用的界面。unity是一種跨平臺可視化的游戲引擎,能夠開發(fā)出豐富多彩的ui,還可以開發(fā)出2d或3d的ui。因此,利用unity開發(fā)android應(yīng)用的界面,可以解決android應(yīng)用面臨的界面問題。
android應(yīng)用除了包括界面層,還包括與界面層互訪的底層業(yè)務(wù)邏輯。底層業(yè)務(wù)邏輯基于android實(shí)現(xiàn)?;诖?,利用unity開發(fā)android應(yīng)用的界面,需要解決基于android實(shí)現(xiàn)的底層業(yè)務(wù)邏輯與基于unity實(shí)現(xiàn)的界面層之間互訪的問題。
針對上述技術(shù)問題,本申請發(fā)明人想到將unity工程封裝成android模塊,即aar模塊,從而將基于android實(shí)現(xiàn)的底層業(yè)務(wù)邏輯與基于unity實(shí)現(xiàn)的界面層之間的互訪,轉(zhuǎn)換成android模塊之間的互訪。
在基于unity封裝成的aar模塊內(nèi)部,如何進(jìn)行數(shù)據(jù)處理是必須解決的問題。對此,本申請發(fā)明人提供一種解決方案,主要原理是:將aar模塊劃分為android層和unity層,在android層提供面向unity層的數(shù)據(jù)傳輸函數(shù),相應(yīng)地,在unity層提供面向android層的數(shù)據(jù)接收函數(shù);android層負(fù)責(zé)數(shù)據(jù)格式的轉(zhuǎn)換,并通過面向unity層的數(shù)據(jù)傳輸函數(shù)將形成的字符串傳入unity層;unity層通過unity層內(nèi)部面向android層的數(shù)據(jù)接收函數(shù)接收字符串,然后對字符串進(jìn)行解析并根據(jù)解析結(jié)果進(jìn)行相應(yīng)處理,從而解決在基于unity封裝成的aar模塊內(nèi)部如何進(jìn)行數(shù)據(jù)處理的問題。
以下結(jié)合附圖,詳細(xì)說明本申請各實(shí)施例提供的技術(shù)方案。
圖1為本申請一實(shí)施例提供的android應(yīng)用中支持unity的數(shù)據(jù)處理方法的流程示意圖。該方法適用于android應(yīng)用中基于unity封裝成的aar模塊,所述aar模塊包括android層和unity層。如圖1所示,所述方法包括:
101、aar模塊中的android層按照預(yù)設(shè)數(shù)據(jù)格式對來自所述aar模塊外部的消息進(jìn)行組裝,以形成字符串。
102、android層通過android層內(nèi)部面向aar模塊中的unity層的數(shù)據(jù)傳輸函數(shù)將所述字符串傳入unity層。
103、unity層通過unity層內(nèi)部面向android層的數(shù)據(jù)接收函數(shù)接收所述字符串。
104、unity層按照預(yù)設(shè)數(shù)據(jù)格式對所述字符串進(jìn)行解析,以獲得所述字符串包含的命令號和數(shù)據(jù)內(nèi)容。
105、unity層根據(jù)所述命令號所標(biāo)識的處理方式,對所述數(shù)據(jù)內(nèi)容進(jìn)行相應(yīng)處理。
在本實(shí)施例中,不對預(yù)設(shè)數(shù)據(jù)格式做限定,可以根據(jù)具體應(yīng)用場景而定??蛇x地,所述預(yù)設(shè)數(shù)據(jù)格式可以是json(javascriptobjectnotation)格式?;诖?,android層需按照json數(shù)據(jù)格式對來自aar模塊外部的消息進(jìn)行組裝,以形成json格式的字符串。
其中,所述來自aar模塊外部的消息是指android應(yīng)用中aar模塊接收到的消息。根據(jù)android應(yīng)用的不同,aar模塊接收到的消息也會有所不同。
在本實(shí)施例中,android層面向unity層提供一數(shù)據(jù)傳輸函數(shù);相應(yīng)地,unity層面向android層提供一數(shù)據(jù)接收函數(shù),這是android層與unity層之間實(shí)現(xiàn)信息交互的基礎(chǔ)。基于此,android層在形成字符串之后,可以通過android層內(nèi)部面向unity層的數(shù)據(jù)傳輸函數(shù)將所述字符串傳入unity層。對unity層來說,可以通過unity層內(nèi)部面向android層的數(shù)據(jù)接收函數(shù)接收所述字符串。
在aar模塊中,主要操作由unity層實(shí)現(xiàn)。為了執(zhí)行有關(guān)操作,unity層需要按照預(yù)設(shè)數(shù)據(jù)格式對字符串進(jìn)行解析,從而獲得字符串中的命令號和數(shù)據(jù)內(nèi)容。其中,命令號用于指示動作類型或處理方式;數(shù)據(jù)內(nèi)容用于指示動作的方式和/或?qū)ο蟆?/p>
基于上述,unity層根據(jù)所述命令號所標(biāo)識的處理方式,對數(shù)據(jù)內(nèi)容進(jìn)行相應(yīng)處理。一般來說,unity層主要用于實(shí)現(xiàn)界面功能,因此,unity層對數(shù)據(jù)內(nèi)容進(jìn)行相應(yīng)處理主要是指界面層的處理。
在本實(shí)施例中,將unity實(shí)現(xiàn)的代碼封裝成aar模塊,并提供了aar模塊內(nèi)部的數(shù)據(jù)處理方式,為unity與android的結(jié)合提供了條件,使得可以利用unity開發(fā)android應(yīng)用的界面,為android應(yīng)用提供豐富多彩的界面,提高android應(yīng)用的界面的友好程度。
在一種具體應(yīng)用場景中,android應(yīng)用為直播應(yīng)用;相應(yīng)地,aar模塊用于構(gòu)建直播應(yīng)用的直播間界面。更為具體地,是由aar模塊中的unity層實(shí)現(xiàn)直播應(yīng)用的直播間界面。
在上述具體應(yīng)用場景中,aar模塊內(nèi)部的數(shù)據(jù)處理流程,如圖2所示,包括以下步驟:
201、aar模塊中的android層監(jiān)聽直播應(yīng)用中直播間界面上的事件。
202、當(dāng)監(jiān)聽到指定事件時(shí),android層從直播應(yīng)用的服務(wù)端和/或直播應(yīng)用的主程序,獲取所述指定事件關(guān)聯(lián)的消息。
203、android層按照預(yù)設(shè)數(shù)據(jù)格式對所述指定事件關(guān)聯(lián)的消息進(jìn)行組裝,以形成字符串。
204、android層通過android層內(nèi)部面向aar模塊中的unity層的數(shù)據(jù)傳輸函數(shù)將所述字符串傳入unity層。
205、unity層通過unity層內(nèi)部面向android層的數(shù)據(jù)接收函數(shù)接收所述字符串。
206、unity層按照預(yù)設(shè)數(shù)據(jù)格式對所述字符串進(jìn)行解析,以獲得所述字符串包含的命令號和數(shù)據(jù)內(nèi)容。
207、unity層根據(jù)所述命令號所標(biāo)識的處理方式,對所述數(shù)據(jù)內(nèi)容進(jìn)行相應(yīng)處理。
在本實(shí)施例中,直播應(yīng)用的直播間界面上經(jīng)常發(fā)生各種事件,例如用戶向主播贈送禮物的事件,用戶進(jìn)入直播間的事件,主播升級的事件,用戶發(fā)表評論的事件,用戶登錄直播間的事件等等。直播間界面上發(fā)生的事件一般是與界面有關(guān)的,需要aar模塊來處理。當(dāng)然,可能有些例外事件不需要aar模塊處理?;诖耍瑢⒅辈ラg界面上與界面相關(guān),需要aar模塊處理的事件定義為指定事件。例如,指定事件可以包括但不限于:開啟彈幕的事件,贈送禮物的事件,用戶升級的事件,主播升級的事件,直播間封禁的事件,變更在線人數(shù)的事件等。
基于此,android層負(fù)責(zé)監(jiān)聽直播應(yīng)用中直播間界面上的事件。當(dāng)在直播間界面上監(jiān)聽到指定事件時(shí),從直播應(yīng)用的服務(wù)端和/或直播應(yīng)用的主程序,獲取所述指定事件關(guān)聯(lián)的消息。其中指定事件關(guān)聯(lián)的消息是unity層進(jìn)行相應(yīng)處理的基礎(chǔ)。根據(jù)指定事件的不同,指定事件關(guān)聯(lián)的消息也會有所不同。根據(jù)指定事件關(guān)聯(lián)的消息的不同,android層獲取所述消息的方式也會有所不同。有些指定事件關(guān)聯(lián)的消息存儲于直播客戶端本地,因此可以通過直播應(yīng)用的主程序來獲取。有些指定事件關(guān)聯(lián)的消息存儲于服務(wù)端,因此可以從直播應(yīng)用的服務(wù)端來獲取。值得說明的是,本申請各處的直播應(yīng)用主要是指直播應(yīng)用的客戶端。
例如,彈幕消息一般存儲于服務(wù)端,當(dāng)需要在直播間界面上顯示彈幕消息時(shí),可以與服務(wù)端建立彈幕獲取長鏈接,基于該彈幕獲取長鏈接從服務(wù)端獲取彈幕消息。基于此,若指定事件為開啟彈幕事件,則因此android需要從服務(wù)端獲取彈幕消息,作為數(shù)據(jù)內(nèi)容。
例如,在線人數(shù)一般由服務(wù)端定時(shí)向客戶端推送,當(dāng)服務(wù)端向客戶端推送新的在線人數(shù)時(shí),意味著需要更新在線人數(shù),此時(shí),服務(wù)端已經(jīng)將新的在線人數(shù)推送至客戶端的主程序中?;诖耍糁付ㄊ录樽兏诰€人數(shù)的事件,則android層可以從客戶端的主程序中獲取新的在線人數(shù)。
又例如,主播等級信息一般包括主播的等級數(shù)和主播等級圖標(biāo)等,考慮主播等級圖標(biāo)更新頻率較低,故可以預(yù)先將所有主播等級圖標(biāo)下載至客戶端本地,以節(jié)約網(wǎng)絡(luò)流量,但主播等級數(shù)可由服務(wù)端實(shí)時(shí)推送?;诖?,若指定事件為主播升級事件,則需要更新主播的等級數(shù)以及主播等級圖標(biāo),android層一方面需要從客戶端的主程序中獲取主播等級圖標(biāo),另一方面需要從服務(wù)端獲取主播等級數(shù)。
當(dāng)android層獲取到指定事件關(guān)聯(lián)的消息之后,可以按照預(yù)設(shè)數(shù)據(jù)格式,例如json數(shù)據(jù)格式對指定事件關(guān)聯(lián)的消息進(jìn)行組裝,以形成json格式的字符串;并通過android層內(nèi)部面向unity層的數(shù)據(jù)傳輸函數(shù)將所述字符串傳入unity層。
可選地,android層的一種代碼實(shí)現(xiàn)如下:
在上述代碼中,unityplayer.unitysendmessage函數(shù)之前的代碼部分,主要實(shí)現(xiàn)字符串的封裝;unityplayer.unitysendmessage函數(shù)是面向unity層的數(shù)據(jù)傳輸函數(shù)。該函數(shù)包含三個(gè)參數(shù),分別為application、onadaptercallmessage以及strjson。其中,strjson是上述代碼形成的字符串;onadaptercallmessage是unity層中面向android層的數(shù)據(jù)接收函數(shù);application是unity層中負(fù)責(zé)對數(shù)據(jù)內(nèi)容進(jìn)行處理的函數(shù)。unityplayer.unitysendmessage函數(shù)的含義是將strjson傳入unity層中的onadaptercallmessage函數(shù),并由unity層中的application函數(shù)進(jìn)行相應(yīng)處理。
對unity層來說,可以通過unity層內(nèi)部面向android層的數(shù)據(jù)接收函數(shù)接收所述字符串;然后,按照預(yù)設(shè)數(shù)據(jù)格式對字符串進(jìn)行解析,從而獲得字符串中的命令號和數(shù)據(jù)內(nèi)容;進(jìn)一步根據(jù)所述命令號所標(biāo)識的處理方式,對數(shù)據(jù)內(nèi)容進(jìn)行相應(yīng)處理。
相應(yīng)地,unity層的一種代碼實(shí)現(xiàn)如下:
在直播應(yīng)用中,根據(jù)指定事件的不同,命令號以及數(shù)據(jù)內(nèi)容都會有所不同。下面舉例說明:
在一種情況下,指定事件為開啟彈幕事件,android層可以由開啟彈幕事件關(guān)聯(lián)的消息組裝成一字符串,相應(yīng)地,unity層可以從該字符串中解析出指示開啟彈幕的命令號,并解析出彈幕消息作為數(shù)據(jù)內(nèi)容。基于此,unity層可以根據(jù)指示開啟彈幕的命令號,在直播間界面上展示彈幕消息。
在另一種情況下,指定事件為贈送禮物的事件,android層可以由贈送禮物的事件關(guān)聯(lián)的消息組裝成一字符串,相應(yīng)地,unity層可以從該字符串中解析出指示贈送禮物的命令號,并解析出用戶贈送給主播的虛擬禮物以及虛擬禮物的動效方式作為數(shù)據(jù)內(nèi)容?;诖?,unity層可以根據(jù)指示贈送禮物的命令號,在直播間界面上,以所述動效方式展示所述用戶贈送給主播的虛擬禮物。
在又一種情況下,指定事件為用戶升級事件,android層可以由用戶升級事件關(guān)聯(lián)的消息組裝成一字符串,相應(yīng)地,unity層可以從該字符串中解析出指示用戶升級的命令號,并解析出升級后的用戶等級消息作為數(shù)據(jù)內(nèi)容?;诖?,unity層可以根據(jù)指示用戶升級的命令號,將直播間界面上顯示的用戶等級信息變更為所述升級后的用戶等級信息。其中,升級后的用戶升級信息可以包括但不限于:升級后的用戶等級數(shù)、升級后的用戶等級圖標(biāo)等。
在又一種情況下,指定事件為主播升級事件,android層可以由主播升級事件關(guān)聯(lián)的消息組裝成一字符串,相應(yīng)地,unity層可以從該字符串中解析出指示主播升級的命令號,并解析出升級后的主播等級消息作為數(shù)據(jù)內(nèi)容?;诖耍瑄nity層可以根據(jù)指示主播升級的命令號,將直播間界面上顯示的主播等級信息變更為所述升級后的主播等級信息。其中,升級后的主播升級信息可以包括但不限于:升級后的主播等級數(shù)、升級后的主播等級圖標(biāo)等。
在又一種情況下,指定事件為直播間封禁事件,android層可以由直播間封禁事件關(guān)聯(lián)的消息組裝成一字符串,相應(yīng)地,unity層可以從該字符串中解析出指示直播間封禁的命令號,并解析出關(guān)閉直播間的指示消息作為數(shù)據(jù)內(nèi)容。基于此,unity層可以根據(jù)指示直播間封禁的命令號,根據(jù)所述關(guān)閉直播間的指示信息,關(guān)閉所述直播間界面。
在又一種情況下,指定事件為變更在線人數(shù)事件,android層可以由變更在線人數(shù)事件關(guān)聯(lián)的消息組裝成一字符串,相應(yīng)地,unity層可以從該字符串中解析出指示變更在線人數(shù)的命令號,并解析出新的在線人數(shù)作為數(shù)據(jù)內(nèi)容?;诖?,unity層可以根據(jù)指示變更在線人數(shù)的命令號,將直播間界面上顯示的在線人數(shù)變更為所述新的在線人數(shù)。
由此可見,在直播應(yīng)用中,基于unity開發(fā)直播應(yīng)用的界面,并將unity實(shí)現(xiàn)的界面代碼封裝成aar模塊,并提供了aar模塊內(nèi)部的數(shù)據(jù)處理方式,為unity與android的結(jié)合提供了條件,充分利用unity開發(fā)的優(yōu)勢,可以為直播應(yīng)用提供豐富多彩的界面,提高直播應(yīng)用的界面的友好程度。
在上述實(shí)施例中,需要預(yù)先基于unity封裝為aar模塊。其中,一種封裝方式包括:在支持android的開發(fā)環(huán)境中,創(chuàng)建一模塊類型的android工程;將unity工程中的資源文件全部復(fù)制到所述android工程中;修改所述android工程中啟動activity的基類為unityplayeractivity;編譯所述android工程,以輸出繼承所述unity工程全部特性的所述aar模塊。
其中,根據(jù)應(yīng)用場景的不同,支持android的開發(fā)環(huán)境也會有所不同。其中,可以自行搭建支持android的開發(fā)環(huán)境。自行搭建支持android的開發(fā)環(huán)境主要包括:安裝java語言開發(fā)工具包(javadevelopmentkit,jdk);安裝eclipse;安裝adt等操作。eclipse是一個(gè)開放源代碼的、基于java的可擴(kuò)展開發(fā)平臺;adt是eclipse平臺下用來開發(fā)android應(yīng)用程序的插件。或者,也可以采用現(xiàn)有的支持android的開發(fā)環(huán)境,例如,androidstudio。androidstudio是google開發(fā)的一款面向android開發(fā)者的ide,支持windows、mac、linux等操作系統(tǒng),是基于流行的java語言集成開發(fā)環(huán)境intellij搭建而成。
上述在支持android的開發(fā)環(huán)境中所創(chuàng)建的android工程實(shí)際上是一個(gè)工程框架,并未包含任何應(yīng)用相關(guān)的內(nèi)容或邏輯,是為了封裝unity工程而創(chuàng)建。其中,應(yīng)用相關(guān)的內(nèi)容或邏輯均在unity工程中實(shí)現(xiàn)??蛇x地,在一應(yīng)用場景中,由unity工程實(shí)現(xiàn)的應(yīng)用相關(guān)的內(nèi)容或邏輯主要為應(yīng)用中與ui相關(guān)的內(nèi)容或邏輯,例如包括界面的布局樣式、交互方式以及輸入輸出方式等。
其中,將unity工程中的資源文件全部復(fù)制到所創(chuàng)建的android工程中,這是實(shí)現(xiàn)將unity工程封裝成aar模塊的主要步驟。
可選地,unity工程主要實(shí)現(xiàn)應(yīng)用中與ui相關(guān)的內(nèi)容或邏輯,例如包括界面的布局樣式、交互方式、動畫渲染以及輸入輸出方式等。根據(jù)具體應(yīng)用需求的不同,unity工程所實(shí)現(xiàn)的ui也會有所不同。相應(yīng)地,unity工程中的資源文件主要包括與ui相關(guān)的資源,例如圖片資源、以及樣式資源等。以直播應(yīng)用為例,unity工程中的資源文件主要包括直播間圖片、主播等級、動畫、頻道頁或直播間頁面的樣式資源等。
可選地,在unity工程和android工程中,可以采用資源文件夾(例如assets文件夾)管理各自的資源文件。基于此,可以從unity工程的資源文件夾中拷貝unity工程中的資源文件,并全部復(fù)制到android工程的資源文件夾中。為便于區(qū)分,可將unity工程的資源文件夾稱之為a_assets,將android工程的資源文件夾稱之為b_assets。
進(jìn)一步可選地,若在創(chuàng)建android工程時(shí),并未建立其資源文件夾,則可以先在android工程的源代碼的主函數(shù)目錄下,新建一資源文件夾;然后,將unity工程中的資源文件全部復(fù)制到新建的資源文件夾中。
unityplayeractivity是unity下的一個(gè)activity,是unity(例如unity3d)的加載入口。通過unityplayeractivity可以加載unity工程實(shí)現(xiàn)的一切功能,例如模型、動畫渲染等。
在將android工程中啟動activity的基類修改為unityplayeractivity之后,android工程將會從unityplayeractivity開始,通過unityplayeractivity可以加載unity工程實(shí)現(xiàn)的一切功能,進(jìn)而得到一個(gè)繼承了unity工程所有特性的android工程。
可選地,可以打開android工程的編輯界面;通過該編輯界面,修改所述啟動activity的基類為unityplayeractivity。
需要說明的是,上述實(shí)施例所提供方法的各步驟的執(zhí)行主體均可以是同一設(shè)備,或者,該方法也由不同設(shè)備作為執(zhí)行主體。比如,步驟101至步驟104的執(zhí)行主體可以為設(shè)備a;又比如,步驟101-103的執(zhí)行主體可以為設(shè)備a,步驟104的執(zhí)行主體可以為設(shè)備b;等等。
圖3為本申請又一實(shí)施例提供的android應(yīng)用中支持unity的數(shù)據(jù)處理裝置的結(jié)構(gòu)示意圖。所述數(shù)據(jù)處理裝置為所述android應(yīng)用中基于unity封裝成的aar模塊。如圖3所示,所述aar模塊或裝置包括:android子模塊30和unity子模塊40。
進(jìn)一步,android子模塊30的一種實(shí)現(xiàn)結(jié)構(gòu)包括:組裝單元31和傳輸單元32。相應(yīng)地,unity子模塊40的一種實(shí)現(xiàn)結(jié)構(gòu)包括:接收單元41、解析單元42和處理單元43。
其中,組裝單元31,用于按照預(yù)設(shè)數(shù)據(jù)格式對來自所述aar模塊外部的消息進(jìn)行組裝,以形成字符串。
傳輸單元32,用于通過android子模塊30內(nèi)部面向unity子模塊40的數(shù)據(jù)傳輸函數(shù)將所述字符串傳入unity子模塊40。
接收單元41,用于通過unity子模塊40內(nèi)部面向android子模塊30的數(shù)據(jù)接收函數(shù)接收所述字符串。
解析單元42,用于按照預(yù)設(shè)數(shù)據(jù)格式對所述字符串進(jìn)行解析,以獲得所述字符串包含的命令號和數(shù)據(jù)內(nèi)容。
處理單元43,用于根據(jù)所述命令號所標(biāo)識的處理方式,對所述數(shù)據(jù)內(nèi)容進(jìn)行相應(yīng)處理。
在一可選實(shí)施方式中,所述android應(yīng)用為直播應(yīng)用;所述aar模塊或裝置用于構(gòu)建所述直播應(yīng)用的直播間界面。
在一可選實(shí)施方式中,android子模塊還包括:監(jiān)聽單元和獲取單元。
監(jiān)聽單元,用于監(jiān)聽所述直播間界面上的事件。相應(yīng)地,獲取單元,用于在所述監(jiān)聽單元監(jiān)聽到指定事件時(shí),從所述直播應(yīng)用的服務(wù)端和/或所述直播應(yīng)用的主程序,獲取所述指定事件關(guān)聯(lián)的消息。獲取單元為組裝單元31提供數(shù)據(jù)基礎(chǔ)。
在一可選實(shí)施方式中,上述字符串包含的命令號為指示開啟彈幕的命令號;所述字符串包含的數(shù)據(jù)內(nèi)容為彈幕消息。基于此,處理單元43具體用于:在所述直播間界面上展示所述彈幕消息。
在一可選實(shí)施方式中,上述字符串包含的命令號為指示贈送禮物的命令號;所述字符串包含的數(shù)據(jù)內(nèi)容為用戶贈送給主播的虛擬禮物以及展示虛擬禮物的動效方式?;诖?,處理單元43具體用于:在所述直播間界面上,以所述動效方式展示所述用戶贈送給主播的虛擬禮物。
在一可選實(shí)施方式中,上述字符串包含的命令號為指示用戶升級的命令號;所述字符串包含的數(shù)據(jù)內(nèi)容為升級后的用戶等級信息。處理單元43具體用于:將所述直播間界面上顯示的用戶等級信息變更為所述升級后的用戶等級信息。
在一可選實(shí)施方式中,上述字符串包含的命令號為指示主播升級的命令號;所述字符串包含的數(shù)據(jù)內(nèi)容為升級后的主播等級信息?;诖?,處理單元43具體用于:將所述直播間界面上顯示的主播等級信息變更為所述升級后的主播等級信息。
在一可選實(shí)施方式中,上述字符串包含的命令號為指示直播間封禁的命令號;所述字符串包含的數(shù)據(jù)內(nèi)容為關(guān)閉直播間的指示信息。基于此,處理單元43具體用于:根據(jù)所述關(guān)閉直播間的指示信息,關(guān)閉所述直播間界面;
在一可選實(shí)施方式中,上述字符串包含的命令號為指示變更在線人數(shù)的命令號;所述字符串包含的數(shù)據(jù)內(nèi)容為新的在線人數(shù)。基于此,處理單元43具體用于:將所述直播間界面上顯示的在線人數(shù)變更為所述新的在線人數(shù)。
本實(shí)施例提供的裝置作為android應(yīng)用中基于unity封裝成的aar模塊,可用于執(zhí)行上述方法實(shí)施例中的流程,具體工作原理可參見前述方法實(shí)施例,在此不再贅述。
本實(shí)施例提供的裝置作為android應(yīng)用中基于unity封裝成的aar模塊,提供了aar模塊內(nèi)部的數(shù)據(jù)處理方式,為unity與android的結(jié)合提供了條件,使得可以利用unity開發(fā)android應(yīng)用的界面,為android應(yīng)用提供豐富多彩的界面,提高android應(yīng)用的界面的友好程度。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲介質(zhì)(包括但不限于磁盤存儲器、cd-rom、光學(xué)存儲器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
這些計(jì)算機(jī)程序指令也可存儲在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲器中,使得存儲在該計(jì)算機(jī)可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
在一個(gè)典型的配置中,計(jì)算設(shè)備包括一個(gè)或多個(gè)處理器(cpu)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。
內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲器,隨機(jī)存取存儲器(ram)和/或非易失性內(nèi)存等形式,如只讀存儲器(rom)或閃存(flashram)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。
計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術(shù)來實(shí)現(xiàn)信息存儲。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲介質(zhì)的例子包括,但不限于相變內(nèi)存(pram)、靜態(tài)隨機(jī)存取存儲器(sram)、動態(tài)隨機(jī)存取存儲器(dram)、其他類型的隨機(jī)存取存儲器(ram)、只讀存儲器(rom)、電可擦除可編程只讀存儲器(eeprom)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲器(cd-rom)、數(shù)字多功能光盤(dvd)或其他光學(xué)存儲、磁盒式磁帶,磁帶磁磁盤存儲或其他磁性存儲設(shè)備或任何其他非傳輸介質(zhì),可用于存儲可以被計(jì)算設(shè)備訪問的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括暫存電腦可讀媒體(transitorymedia),如調(diào)制的數(shù)據(jù)信號和載波。
還需要說明的是,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、商品或者設(shè)備中還存在另外的相同要素。
本領(lǐng)域技術(shù)人員應(yīng)明白,本申請的實(shí)施例可提供為方法、系統(tǒng)或計(jì)算機(jī)程序產(chǎn)品。因此,本申請可采用完全硬件實(shí)施例、完全軟件實(shí)施例或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本申請可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲介質(zhì)(包括但不限于磁盤存儲器、cd-rom、光學(xué)存儲器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
以上所述僅為本申請的實(shí)施例而已,并不用于限制本申請。對于本領(lǐng)域技術(shù)人員來說,本申請可以有各種更改和變化。凡在本申請的精神和原理之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請的權(quán)利要求范圍之內(nèi)。