基于android廣電網(wǎng)絡(luò)瀏覽器中間件系統(tǒng)構(gòu)建方法
【專利摘要】本發(fā)明涉及一種基于android廣電網(wǎng)絡(luò)瀏覽器中間件系統(tǒng)構(gòu)建方法,通過(guò)基于webkit開(kāi)源瀏覽引擎上擴(kuò)展OCN網(wǎng)絡(luò)服務(wù)頁(yè)面的私有標(biāo)簽,屬性,對(duì)象服務(wù)類來(lái)實(shí)現(xiàn),同時(shí)將網(wǎng)頁(yè)中內(nèi)嵌電視實(shí)現(xiàn)和VOD節(jié)目點(diǎn)播服務(wù)整合到webkit瀏覽引擎中成為一體,作為一個(gè)可以在android系統(tǒng)中夸平臺(tái)的安裝包。本發(fā)明能為電視機(jī)頂盒整合中間件系統(tǒng)帶來(lái)極大方便,能為機(jī)頂盒制造商迅速整合發(fā)布產(chǎn)品提供高效率的系統(tǒng)訂制服務(wù)。
【專利說(shuō)明】基于android廣電網(wǎng)絡(luò)瀏覽器中間件系統(tǒng)構(gòu)建方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種,特別涉及一種基于android廣電網(wǎng)絡(luò)瀏覽器中間件系統(tǒng)構(gòu)建方法。
【背景技術(shù)】
[0002]目前廣電行業(yè)的終端智能化正在逐步進(jìn)行,各省份地區(qū)的運(yùn)營(yíng)商都紛紛出自己的智能終端機(jī)頂盒,大部分都是使用android平臺(tái),或者類似android平臺(tái)來(lái)開(kāi)發(fā)機(jī)頂盒。由于各省份的運(yùn)營(yíng)商業(yè)務(wù)有自己的獨(dú)特性,各地方提供的業(yè)務(wù)服務(wù)形式都是有差異的。特別是雙向網(wǎng)絡(luò)改造后,廣電網(wǎng)提供的業(yè)務(wù)服務(wù)也開(kāi)始逐步多樣化。
[0003]基于目前OCN提供的服務(wù)內(nèi)容,特別是雙向業(yè)務(wù),主要包括
1、娛樂(lè)教育,包括優(yōu)化學(xué)習(xí),電視學(xué)堂,黨員教育;
2、金融服務(wù),包括證券資訊,電視銀行,彩票天地,東方購(gòu)物,家有購(gòu)物,互動(dòng)商城,特惠機(jī)票,東方俱樂(lè)部,便民付費(fèi)等;
3、社區(qū)生活,包括智慧長(zhǎng)寧,智慧閔行,郵件通知;
4、視頻點(diǎn)播VOD服務(wù),這個(gè)服務(wù)也是目前最受終端用戶歡迎的服務(wù)。
[0004]總結(jié)上面的業(yè)務(wù),從技術(shù)角度分析,主要是以下面的技術(shù)形式提供的,
1、HTML形式的雙向網(wǎng)頁(yè)(股票,彩票天地,智慧閔行等),大部分業(yè)務(wù)是通過(guò)此類型技術(shù)實(shí)現(xiàn),金融,娛樂(lè)服務(wù);
2、視頻點(diǎn)播(RTSP),VOD服務(wù),目前最受歡迎的業(yè)務(wù);
3、內(nèi)嵌DVB直播,傳統(tǒng)DVB播放,通過(guò)機(jī)頂盒硬件芯片平臺(tái)提供的數(shù)據(jù)流媒體服務(wù)。
[0005]由于機(jī)頂盒中間件雙向業(yè)務(wù)主要包括gui服務(wù)和網(wǎng)頁(yè)形式的業(yè)務(wù)服務(wù)。而開(kāi)發(fā)主要精力還是投入于雙向業(yè)務(wù)的網(wǎng)頁(yè)這部分解析工作,故將這復(fù)雜的部分整合在一個(gè)整體,這樣方便終端機(jī)頂盒的迅速出貨。而且google目前準(zhǔn)備將在android4.4后取消免費(fèi)的自帶chrome,如果使用google瀏覽器,需要專門收費(fèi),鑒于目前google瀏覽器是無(wú)法完全兼容OCN業(yè)務(wù)需求,需要專門開(kāi)發(fā)。
【發(fā)明內(nèi)容】
[0006]本發(fā)明是針對(duì)OCN業(yè)務(wù)與android機(jī)頂盒兼容的問(wèn)題,提出了一種基于android廣電網(wǎng)絡(luò)瀏覽器中間件系統(tǒng)構(gòu)建方法,系統(tǒng)可方便迅速的植入到智能終端機(jī)頂盒中,在android機(jī)頂盒上實(shí)現(xiàn)OCN網(wǎng)絡(luò)頭端的解析,解決OCN業(yè)務(wù)與android機(jī)頂盒兼容問(wèn)題。
[0007]本發(fā)明的技術(shù)方案為:一種基于android廣電網(wǎng)絡(luò)瀏覽器中間件系統(tǒng)構(gòu)建方法,具體包括如下步驟:
1)提取webkit瀏覽引擎,在此基礎(chǔ)上構(gòu)筑瀏覽引擎用戶界面與瀏覽引擎基于android的framewor中間層,包括與瀏覽器上層應(yīng)用的界面交互接口以及與瀏覽引擎webcore的信息控制接口 ;
2)在webkit瀏覽引擎基礎(chǔ)上,構(gòu)建Webcore底層接口,向上鏈接framework中間層,向下鏈接瀏覽引擎webcore核心庫(kù);
3)在webkit瀏覽引擎基礎(chǔ)上,裝載網(wǎng)頁(yè)、過(guò)濾網(wǎng)頁(yè)元素;
4)在裝載網(wǎng)頁(yè)結(jié)束后,在webkit瀏覽引擎上構(gòu)建DOM樹(shù),同時(shí)構(gòu)造與擴(kuò)展頭端服務(wù)器網(wǎng)頁(yè)JS使用的windows對(duì)象公用函數(shù)類,使webkit瀏覽引擎直接和JS交互數(shù)據(jù);
5)設(shè)計(jì)內(nèi)嵌VOD播放模塊;
6)在webkit瀏覽引擎基礎(chǔ)上,進(jìn)行增加HTML協(xié)議標(biāo)簽,進(jìn)行私有標(biāo)簽擴(kuò)展;
7)在webkit瀏覽引擎基礎(chǔ)上,對(duì)新增加HTML協(xié)議標(biāo)簽進(jìn)行渲染,構(gòu)筑對(duì)應(yīng)私有標(biāo)簽的元素的渲染部分;
8)設(shè)計(jì)VOD點(diǎn)播RSTP接口,對(duì)瀏覽引擎中構(gòu)造的各部分接口進(jìn)行統(tǒng)一封裝并建立庫(kù);
9)將接口庫(kù)和調(diào)整后的瀏覽引擎一起裝成VOD實(shí)現(xiàn)的核心庫(kù)。
[0008]所述步驟4)構(gòu)造與擴(kuò)展頭端服務(wù)器網(wǎng)頁(yè)JS使用的windows對(duì)象公用函數(shù)類,構(gòu)造步驟如下:
a)DOMWindow類為瀏覽引擎默認(rèn)類對(duì)象,在此基礎(chǔ)上擴(kuò)展類入口 ;
b)在DOMWindow.h 中增加 public 成員 CCXJShow *jshow() const ;
c)在DOMWindow.cpp 中實(shí)現(xiàn);
d)CCXJShow.cpp主體實(shí)現(xiàn)以及CCXJShow.h的類對(duì)象聲明于WebCore核心中,構(gòu)造包括private的控制類屬性對(duì)象,以及public功能實(shí)現(xiàn)類操作;
e)設(shè)計(jì)雙向數(shù)據(jù)傳送功能,重新定義網(wǎng)頁(yè)JS的按鍵操作,通過(guò)接口函數(shù)獲取頭端服務(wù)
信息;
f )將對(duì)象添加入webcore核心編譯mk文件中參與webcore核心庫(kù)編譯。
[0009]所述步驟5 )設(shè)計(jì)內(nèi)嵌VOD播放模塊具體包括:
A、設(shè)計(jì)JS的window類對(duì)象;
B、實(shí)現(xiàn)VOD播放核心庫(kù);
C、通過(guò)外部聲明extern int DVMI_VodHfcPlayStart (DVMI_V0D_HFC_PLAY_INF0*tInfo);執(zhí)行芯片平臺(tái)的stream流解析器;
D、RTSP的協(xié)議實(shí)現(xiàn),兼容服務(wù)器端的SM,VS2種模式;初始化RTSP_DealffithCmdAckTask領(lǐng)命響應(yīng)任務(wù),需要開(kāi)啟IOOK的內(nèi)存空間;初始化RTSP_TCP_DataRecvSMTask數(shù)據(jù)接收任務(wù),也需要開(kāi)啟100K內(nèi)存,如果是VS模式則創(chuàng)建RTSP_TCP_DataRecvVSTask數(shù)據(jù)接收任務(wù),針對(duì)OCN網(wǎng)絡(luò)VOD 2.0協(xié)議設(shè)計(jì)差異的ACK應(yīng)答方式,播放方式。
[0010]所述步驟6 )進(jìn)行私有標(biāo)簽擴(kuò)展步驟:
O首先要增加tag和對(duì)應(yīng)的HTML元素的對(duì)應(yīng)關(guān)系;
2)然后在webcore下的HTML部分增加對(duì)應(yīng)的HTML元素構(gòu)造文件,實(shí)現(xiàn)HTMLTVElement.cpp 以及 HTMLTVElement.h 類對(duì)象的構(gòu)造,HTMLTVElement 對(duì)象也是WebCore域核心類的成員;
3)實(shí)現(xiàn)類成員的私有狀態(tài)變量以及公有窗口信息接口;
4)對(duì)擴(kuò)展標(biāo)簽屬性進(jìn)行定義。
[0011]本發(fā)明的有益效果在于:本發(fā)明基于android廣電網(wǎng)絡(luò)瀏覽器中間件系統(tǒng)構(gòu)建方法,可在廣電基礎(chǔ)網(wǎng)絡(luò)硬件和前端業(yè)務(wù)服務(wù)器系統(tǒng)作為一個(gè)不變的基礎(chǔ),將本發(fā)明系統(tǒng)植入到智能終端機(jī)頂盒內(nèi),減少機(jī)頂盒生產(chǎn)廠商的開(kāi)發(fā)周期。這樣極大的方便了開(kāi)發(fā)生產(chǎn)環(huán)節(jié),有利于廣電行業(yè)智能化的迅速普及。
【專利附圖】
【附圖說(shuō)明】
[0012]圖1為本發(fā)明基于android廣電網(wǎng)絡(luò)瀏覽器中間件系統(tǒng)構(gòu)建示意圖;
圖2為用本發(fā)明系統(tǒng)調(diào)整后瀏覽器與傳統(tǒng)瀏覽器框架對(duì)比圖;
圖3為本發(fā)明OCN網(wǎng)頁(yè)window成員擴(kuò)展邏輯框圖;
圖4為本發(fā)明瀏覽引擎標(biāo)簽擴(kuò)展框圖;
圖5為本發(fā)明內(nèi)嵌電視節(jié)目播放接口框圖;
圖6為本發(fā)明VOD視頻點(diǎn)播設(shè)計(jì)框架圖;
圖7為本發(fā)明系統(tǒng)整體平移流程圖。
【具體實(shí)施方式】
[0013]由于OCN網(wǎng)絡(luò)頭端主體是采用HTML4.0的協(xié)議來(lái)實(shí)現(xiàn),增加了自己的很多私有屬性,標(biāo)簽以及操作按鍵方法。在此特性基礎(chǔ)上,依托于android上瀏覽引擎webkit開(kāi)源的特性,將這個(gè)解析過(guò)程基于傳統(tǒng)webkit瀏覽器做了優(yōu)化,提煉。
[0014]如圖1所示基于android廣電網(wǎng)絡(luò)瀏覽器中間件系統(tǒng)構(gòu)建示意圖,在傳統(tǒng)的webkit瀏覽引擎上做了幾塊調(diào)整,補(bǔ)充,主要都是為了解析OCN頭端網(wǎng)絡(luò)系統(tǒng)方便,同時(shí)也方便后續(xù)同樣工作的整體平移。由于是需要將webkit瀏覽引擎從智能終端平臺(tái)中獨(dú)立提取出來(lái),做一個(gè)標(biāo)準(zhǔn)的可安裝的應(yīng)用包,因此需要將webkit瀏覽引擎獨(dú)立出來(lái),做一個(gè)基于webkit的自己的瀏覽器。就是類似在android平臺(tái)上安裝百度,UC瀏覽器一樣,平臺(tái)有自己的瀏覽器和瀏覽引擎,UC瀏覽器安裝包同樣保留了一套自己的。這樣獨(dú)立出來(lái),可以方便智能機(jī)頂盒迅速的搭建起基于OCN業(yè)務(wù)特色的OTT服務(wù)端。
[0015]步驟具體如下:
I)構(gòu)筑NDK環(huán)境的瀏覽引擎的framework中間層,framework中間層設(shè)計(jì)包含了 2塊的交互接口,與瀏覽器上層應(yīng)用的界面交互接口以及與瀏覽引擎webcore的信息控制接口:A:與瀏覽器上層應(yīng)用接口,主要設(shè)計(jì)創(chuàng)建webview類在java域主體部分,設(shè)計(jì)上層應(yīng)用針對(duì)網(wǎng)頁(yè)的frame,contiOller的控制實(shí)現(xiàn)部分。同時(shí)構(gòu)筑瀏覽器的客服端口,針對(duì)需要連接的urI地址進(jìn)行內(nèi)容解析;
B:與瀏覽引擎內(nèi)核webcore的信息控制接口設(shè)計(jì),主要設(shè)計(jì)webview, webviewcore的C++域主題實(shí)現(xiàn),方式主要是通過(guò)NDK的JNI接口方式,實(shí)現(xiàn)瀏覽引擎和用戶中間層的交互控制。Webview類JNI接口主要實(shí)現(xiàn)用戶對(duì)終端設(shè)備操作控制接口,比如鼠標(biāo)移動(dòng)點(diǎn)擊位置響應(yīng),瀏覽引擎裝載對(duì)應(yīng)的滑動(dòng)位置的頁(yè)面內(nèi)容裝載更新;鼠標(biāo)或者觸摸控制頁(yè)面放大,縮小比例的控制操作;觸摸控制頁(yè)面左右上下移動(dòng)的刷新操作等功能接口控制。同時(shí)也需要構(gòu)筑諸如瀏覽引擎需要主動(dòng)通知頁(yè)面用戶的反方向信息控制接口,提示當(dāng)前點(diǎn)擊焦點(diǎn),高亮焦點(diǎn)的操作;提供網(wǎng)頁(yè)內(nèi)搜索操作;提供文字輸入框操作;提供瀏覽引擎繪制操作;提供瀏覽引擎自銷毀接口。Webviewcore類構(gòu)筑提供上層網(wǎng)頁(yè)JS的函數(shù)服務(wù)器接口,JS卸載,裝載,確認(rèn),中斷服務(wù)接口 ;提供webviewcore層的繪制服務(wù);提供按鍵事件服務(wù)接口等雙向接口服務(wù);2)Webcore底層接口的實(shí)現(xiàn),webcore底層接口是直接服務(wù)于webkit底層瀏覽引擎核心webcore,接口服務(wù)也是承上啟下,承上是鏈接framework中間層;啟下是鏈接瀏覽引擎webcore核心庫(kù)。承上的內(nèi)容同framework中間層的交互描述。針對(duì)啟下設(shè)計(jì),主要包含下面的設(shè)計(jì)部分:
A:提供內(nèi)核刷新頁(yè)面內(nèi)容的操作接口方法,即圖層繪制接口 ;
B:提供更新文字輸入的瀏覽引擎接口方法;
C:提供鼠標(biāo)滾動(dòng),觸摸滑動(dòng)位置信息提供操作;
D:提供焦點(diǎn)服務(wù)邏輯計(jì)算的入口接口 ;
E:提供裝載頁(yè)面的多線程cache機(jī)制服務(wù);
F:提供構(gòu)筑frame, page, dom, layout樹(shù)觸發(fā)構(gòu)造機(jī)制接口服務(wù);
G:提供瀏覽引擎的錨元素接口 ; H:提供JS,CSS解析服務(wù)操作機(jī)制。
[0016]3)瀏覽引擎裝載網(wǎng)頁(yè),過(guò)濾頁(yè)面使用元素設(shè)計(jì)。在頁(yè)面裝載過(guò)程中,利用瀏覽引擎核心使用的頁(yè)面裝載cache機(jī)制。針對(duì)OCN特殊業(yè)務(wù)焦點(diǎn)繪制,提供JS重載服務(wù)。主要是OCN網(wǎng)頁(yè)的焦點(diǎn)位置特殊性,以及由于webkit瀏覽引擎發(fā)展的局部完善過(guò)程,需要針對(duì)特殊的頁(yè)面服務(wù)的焦點(diǎn)提供瀏覽引擎專門繪制服務(wù)。該服務(wù)通過(guò)重載JS操作來(lái)實(shí)現(xiàn);
該方法具體實(shí)現(xiàn)邏輯,以實(shí)例說(shuō)明如下
1:當(dāng)webkit cache裝載資源請(qǐng)求的時(shí)候,就是運(yùn)行到CachedResourceLoader::requestResource方法時(shí)候,進(jìn)行裝載文件的路徑和文件名字判斷,if (resourceURL=="/InfoBetPortal/js/pages/index/STB2.js〃);
I1:如果判斷這個(gè)唯一標(biāo)準(zhǔn)位成功,則讓瀏覽引擎裝載本地調(diào)整過(guò)的JS文件,urllocal=m_document->compIeteURL(^file:///data/www/js/STB2.js");同時(shí)設(shè)置重新裝載本地資源標(biāo)志
needlocalstb2js=true ;
II1:從新裝載資源操作
if (needlocalstb2js==true)
{
needlocalstb2js=false;
resource = 1adResource(type, urllocal, charset, priority);
}
4)在裝載頁(yè)面結(jié)束后,瀏覽引擎構(gòu)建各種樹(shù),并提供事件管理機(jī)制。我們?cè)跇?gòu)建DOM樹(shù)的時(shí)候創(chuàng)建OCN服務(wù)網(wǎng)頁(yè)的JS函數(shù)類服務(wù)接口。該服務(wù)也是雙向控制接口的,接口功能實(shí)現(xiàn)了多個(gè)模塊的JS控制,主要包括內(nèi)嵌電視播放,內(nèi)嵌VOD點(diǎn)播,MP3,SIP服務(wù)接口設(shè)計(jì)。同時(shí)也為將來(lái)OCN頁(yè)面業(yè)務(wù)擴(kuò)展提供接口預(yù)留服務(wù)。在這里我們是強(qiáng)調(diào)此接口擴(kuò)展的功能性,擴(kuò)展的方法是普通方法。
[0017]5)由于VOD接口函數(shù)也來(lái)自JS window公用類對(duì)象操作,故可以在此設(shè)計(jì) 內(nèi)嵌VOD播放模塊。此部分設(shè)計(jì)比較復(fù)雜,主要實(shí)現(xiàn)了下面幾個(gè)模塊,
A:設(shè)計(jì)基于V8 JS引擎的信號(hào)控制機(jī)制,主要是VOD點(diǎn)播時(shí)候,監(jiān)聽(tīng)是否一致處于連接狀態(tài)。[0018]B:設(shè)計(jì)VOD點(diǎn)播時(shí)候控制面板JS對(duì)VOD播放控制接口。
[0019]C:通過(guò)DOM window對(duì)象類的VOD控制擴(kuò)展部分,對(duì)接實(shí)際VOD實(shí)現(xiàn)的核心庫(kù)。
[0020]DiVOD核心庫(kù)的實(shí)現(xiàn),包括VOD初始化,關(guān)閉的時(shí)候資源是否,VOD點(diǎn)播開(kāi)啟,暫停,播放狀態(tài)控制,以及準(zhǔn)確時(shí)間點(diǎn)節(jié)目播放控制等。
[0021]E:將VOD庫(kù)一起整合入瀏覽引擎核心庫(kù)。
[0022]6)構(gòu)筑HTML元素私有標(biāo)簽,主要構(gòu)筑內(nèi)嵌電視播放的標(biāo)簽,以及內(nèi)嵌VOD點(diǎn)播的標(biāo)簽。主要構(gòu)筑標(biāo)簽主要設(shè)計(jì)實(shí)現(xiàn)下面三塊:
A:設(shè)計(jì)標(biāo)簽對(duì)應(yīng)的渲染部分的鏈接;
B:獲取元素的播放的窗口位置信息,傳遞給渲染部分;
C:TV播放狀態(tài)的初始設(shè)置,以及狀態(tài)控制;
7)新增標(biāo)簽渲染部分設(shè)計(jì),主要設(shè)計(jì)內(nèi)嵌電視播放接口,以及接口的統(tǒng)一設(shè)計(jì)。主要構(gòu)筑下面幾個(gè)模塊:
A:獲取內(nèi)嵌電視播放的窗口位置信息,并設(shè)置到layout布局樹(shù)種;
B:繪制paint接口,開(kāi)啟內(nèi)嵌廣播電視播放接口。
[0023]C:在渲染析構(gòu)的時(shí)候設(shè)計(jì)內(nèi)嵌廣播電視資源釋放接口。
[0024]D:統(tǒng)一構(gòu)筑內(nèi)嵌廣播電視接口函數(shù)庫(kù),為不同的硬件平臺(tái)統(tǒng)一構(gòu)筑瀏覽引擎的接口函數(shù)庫(kù),主要實(shí)現(xiàn)播放開(kāi)啟,播放停止,播放暫停,播放時(shí)音量控制,播放窗口設(shè)置,播放狀態(tài)控制。將此核心庫(kù)放入瀏覽引擎庫(kù)中。
[0025]E:構(gòu)筑內(nèi)嵌視頻播放的平臺(tái)實(shí)現(xiàn)接口,通過(guò)在瀏覽引擎中初始化函數(shù)指針數(shù)組
--對(duì)應(yīng)法則,將平臺(tái)實(shí)現(xiàn)的接口轉(zhuǎn)入到android平臺(tái)framework層的C++域中實(shí)現(xiàn),這樣
芯片平臺(tái)通過(guò)自己的JNI接口很容易將自己的Iinux系統(tǒng)實(shí)現(xiàn)的芯片電視播放功能接口引入到該層中。
[0026]在構(gòu)建調(diào)整中,在瀏覽引擎構(gòu)造DOM樹(shù)時(shí)候,構(gòu)造頭端網(wǎng)頁(yè)JS使用的windows對(duì)象公用函數(shù)。由于頭端JS直接使用window對(duì)象成員,故此只能在此部分實(shí)現(xiàn)。
[0027]在瀏覽引擎過(guò)濾HTML元素時(shí)候,創(chuàng)建頭端網(wǎng)頁(yè)特有的標(biāo)簽。
[0028]在瀏覽引擎渲染HTML元素時(shí)候,設(shè)計(jì)android系統(tǒng)底層播放接口,后臺(tái)開(kāi)啟新任務(wù)來(lái)滿足這個(gè)內(nèi)嵌電視的播放需求。此部分為技術(shù)創(chuàng)新的重點(diǎn),內(nèi)嵌電視私有標(biāo)簽是最重要功能,實(shí)現(xiàn)采用了一體設(shè)計(jì),既做到了技術(shù)保密,也方便了整體項(xiàng)目平移。
[0029]設(shè)計(jì)VOD點(diǎn)播RSTP接口,滿足OCN運(yùn)營(yíng)的視頻點(diǎn)播功能。此部分也是設(shè)計(jì)的重點(diǎn),也采用了一體化設(shè)計(jì),兼顧了技術(shù)保密和技術(shù)整體平移。
[0030] 如圖2所示用本發(fā)明系統(tǒng)調(diào)整后瀏覽器與傳統(tǒng)瀏覽器框架對(duì)比圖,實(shí)際上通過(guò)NDK的整體開(kāi)發(fā),直接生成夸平臺(tái)的android安裝包,只需要將包安裝在不同的android硬件平臺(tái)就可以了 ;而不需要像傳統(tǒng)瀏覽引擎開(kāi)發(fā),需要針對(duì)目標(biāo)板系統(tǒng)進(jìn)行深層次的系統(tǒng)開(kāi)發(fā),而且更換平臺(tái),或者android平臺(tái)升級(jí),只能考慮重新移植系統(tǒng)差異化代碼;這樣省去了極大的版本維護(hù),移植大批量的代碼移植工作,只需要直接安裝一個(gè)android apk包就可以。在傳統(tǒng)的瀏覽器開(kāi)發(fā)基礎(chǔ)做了提煉,特別是針對(duì)android平臺(tái)頻繁升級(jí)以及考慮后續(xù)android平臺(tái)后續(xù)有償提供瀏覽器服務(wù),單獨(dú)開(kāi)發(fā)擁有自己特殊業(yè)務(wù)的瀏覽器成為該專利的重點(diǎn)。該調(diào)整同時(shí)也對(duì)智能機(jī)頂盒的生產(chǎn)加工做了極大的優(yōu)化,生產(chǎn)商只管生產(chǎn)盒子就行,廣播網(wǎng)的中間件可以由此瀏覽器中間系統(tǒng)android系統(tǒng)的⑶I來(lái)實(shí)現(xiàn)。這樣極大的方便了開(kāi)發(fā)生產(chǎn)環(huán)節(jié),有利于廣電行業(yè)智能化的迅速普及。
[0031]構(gòu)造DOM樹(shù)時(shí)候創(chuàng)建window成員對(duì)象,如圖3所示OCN網(wǎng)頁(yè)window成員擴(kuò)展邏輯框圖,此設(shè)計(jì)采用雙向數(shù)據(jù)傳遞業(yè)務(wù),而且基于瀏覽引擎設(shè)計(jì)了和JS數(shù)據(jù)交換方式,和之前傳統(tǒng)的瀏覽器和JS交互數(shù)據(jù)不同,傳統(tǒng)的交互方式是在上層增加JS的函數(shù)監(jiān)聽(tīng)方式,傳統(tǒng)數(shù)據(jù)交換方式只能限于瀏覽器java上層和JS進(jìn)行交互。采用引擎直接和JS交互,更加方便了后續(xù)的開(kāi)發(fā)工作,為后續(xù)在android智能機(jī)頂盒開(kāi)發(fā)視頻共享等功能提供了方便。
[0032]以實(shí)例說(shuō)明如下,針對(duì)window類成員擴(kuò)展,
DDOMWindow類為瀏覽引擎默認(rèn)類對(duì)象,在此基礎(chǔ)上擴(kuò)展類入口
2)在DOMWindow.h 中增加 public 成員 CCXJShow *jshow() const ;
3)在DOMWindow.cpp 中實(shí)現(xiàn) 4)CCXJShow.cpp主體實(shí)現(xiàn)以及CCXJShow.h的類對(duì)象聲明于WebCore核心中,構(gòu)造包括private的控制類屬性對(duì)象,以及public功能實(shí)現(xiàn)類操作。針對(duì)功能擴(kuò)展都基于此類對(duì)象的成員擴(kuò)展,就是此類添加多的功能函數(shù)方法。
[0033]5)設(shè)計(jì)雙向數(shù)據(jù)傳送功能,比如針對(duì)特殊網(wǎng)頁(yè)定義不同按鍵的操作方式接口函數(shù),我們使用此接口來(lái)重新定義網(wǎng)頁(yè)JS的按鍵操作,或者我們可以通過(guò)下面的接口函數(shù)獲取頭端服務(wù)信息,
NGBSystemInfo systemlnfo O ;
雙向信息傳輸?shù)脑O(shè)計(jì)可以滿足網(wǎng)頁(yè)JS對(duì)機(jī)頂盒的功能要求,也可以方便機(jī)頂盒對(duì)服務(wù)器網(wǎng)頁(yè)的狀態(tài),控制參數(shù)的監(jiān)控。
[0034]6)將此類對(duì)象添加入webcore核心編譯mk文件中參與webcore核心庫(kù)編譯,在webcore 的 android, mk 中
L0CAL_SRC_FILES:= \ 下增加 page/ CCXJShow.cpp
此設(shè)計(jì)與傳統(tǒng)HTML window成員擴(kuò)展類似,在引擎構(gòu)造DOM樹(shù)時(shí)候創(chuàng)建該擴(kuò)展接口,同時(shí)會(huì)在HTML/JS調(diào)用時(shí)候做一個(gè)確認(rèn)是否創(chuàng)建動(dòng)作,如果創(chuàng)建,則返回之前的統(tǒng)一接口,否則創(chuàng)建一個(gè)新的JS接口系統(tǒng)。
[0035]該接口系統(tǒng)是設(shè)計(jì)的可以擴(kuò)展形式,方便后續(xù)頭端服務(wù)器系統(tǒng)擴(kuò)展,目前主要支持了下面幾塊接口功能。就是說(shuō)后續(xù)要開(kāi)發(fā)視頻通訊,可以通過(guò)此公用平臺(tái)接口來(lái)擴(kuò)展。
[0036]VOD控制、TV播放控制、VOD播放的信號(hào)控制,這3塊實(shí)際上是整合在一個(gè)統(tǒng)一的類對(duì)象里面,屬于同一個(gè)類的不同功能成員塊,此設(shè)計(jì)的目的也是屬于廣電行業(yè)服務(wù)器特殊的實(shí)現(xiàn)。主要是由于廣電行業(yè)的服務(wù)都是通過(guò)HTML頁(yè)面來(lái)實(shí)現(xiàn),而且控制都是位于當(dāng)前頁(yè)面的所使用JS里面。故此需要做這個(gè)統(tǒng)一的功能接口調(diào)整。
[0037]針對(duì)瀏覽引擎標(biāo)簽擴(kuò)展如圖4所示框圖,首先瀏覽引擎webcore初始化構(gòu)造過(guò)程,后設(shè)計(jì)引擎過(guò)濾HTML標(biāo)簽的鏈接點(diǎn),再進(jìn)行HTML私有標(biāo)簽主體實(shí)現(xiàn),最后進(jìn)行HTML私有標(biāo)簽渲染和繪制。HTML標(biāo)簽是HTML的重要協(xié)議組成部分,比如最常用的a標(biāo)簽等。由于OCN服務(wù)器網(wǎng)頁(yè)使用了許多私有標(biāo)簽,故此需要將標(biāo)簽進(jìn)行擴(kuò)展。同時(shí)針對(duì)標(biāo)簽的屬性進(jìn)行必要的擴(kuò)展,由于android版本差異會(huì)導(dǎo)致使用webkit版本差異,故有擴(kuò)展標(biāo)簽私有屬性的要求,特別是針對(duì)a標(biāo)簽的onfocus屬性。
[0038]以實(shí)例說(shuō)明如下,針對(duì)HTML私有標(biāo)簽的擴(kuò)展,以及針對(duì)HTML通用標(biāo)簽的屬性擴(kuò) 展,
針對(duì)標(biāo)簽擴(kuò)展
O首先要增加tag和對(duì)應(yīng)的HTML元素的對(duì)應(yīng)關(guān)系 Source/ffebCore/html/HTMLTagNames.1n tv interfaceName=HTMLTVElement vod interfaceName=HTMLVODElement
2)然后在webcore下的HTML部分增加對(duì)應(yīng)的HTML元素構(gòu)造文件,實(shí)現(xiàn)HTMLTVElement.cpp 以及 HTMLTVElement.h 類對(duì)象的構(gòu)造,HTMLTVElement 對(duì)象也是WebCore域核心類的成員。
[0039]3)實(shí)現(xiàn)類成員的私有狀態(tài)變量以及公有窗口信息接口等方法。
[0040]針對(duì)屬性擴(kuò)展,以A標(biāo)簽的onfocus屬性為例,說(shuō)明標(biāo)簽屬性擴(kuò)展方法。
[0041]I)在browser java域主進(jìn)程中實(shí)現(xiàn)屬性操作方法,不能在webview類中實(shí)現(xiàn),否則會(huì)拋異常。
[0042]2)在browser主進(jìn)程中設(shè)計(jì)廣播觸發(fā)的方法,由于只有當(dāng)前頁(yè)面的webview類對(duì)象才能在上層UI做合法的webview method操作,故此通過(guò)主進(jìn)程設(shè)計(jì)的controller來(lái)獲取當(dāng)前頁(yè)面的工作的webview類對(duì)象;
3)在webcore中判斷當(dāng)前a標(biāo)簽的onfocus屬性存在與否進(jìn)行觸發(fā);
4)執(zhí)行觸發(fā)函數(shù)設(shè)計(jì),在webviewcore類對(duì)象中設(shè)計(jì)ngbintrigufocus,通過(guò)調(diào)用webview中的消息廣播函數(shù),將onfocus更新廣播發(fā)送到j(luò)ava域。
[0043]內(nèi)嵌電視節(jié)目播放接口設(shè)計(jì),是整個(gè)瀏覽引擎設(shè)計(jì)的2個(gè)核心之一,另外一個(gè)設(shè)計(jì)核心是VOD視頻點(diǎn)播。設(shè)計(jì)思路體現(xiàn)了簡(jiǎn)易性以及整體平移便捷性。此部分設(shè)計(jì)框圖如圖5所示。
[0044]以內(nèi)嵌視頻播放為例說(shuō)明接口整體設(shè)計(jì)如下,其余功能接口類似:
1、渲染繪制引入TV播放的入口;
2、D_AV_PlayAuto和平臺(tái) SDK, NgbBrowserAvPlayAuto 接口 設(shè)計(jì),
3、設(shè)置ADAPTER_STB_M0DULE函數(shù)類接口的整體初始化,通過(guò)此封裝將將瀏覽引擎的播放函數(shù)轉(zhuǎn)接到芯片平臺(tái)的SDK接口函數(shù)。
[0045]以VOD播放為例說(shuō)明內(nèi)嵌電視節(jié)目接口整體設(shè)計(jì)如下,其余功能接口類似:
1、設(shè)計(jì)JS的window類對(duì)象
2、實(shí)現(xiàn)VOD播放核心庫(kù)
3、通過(guò)外部聲明extern int DVMI_VodHfcPlayStart (DVMI_V0D_HFC_PLAY_INF0*tInfo);執(zhí)行芯片平臺(tái)的stream流解析器;
4、RTSP的協(xié)議實(shí)現(xiàn),兼容服務(wù)器端的SM,VS2種模式;初始化RTSP_DealffithCmdAckTask領(lǐng)命響應(yīng)任務(wù),需要開(kāi)啟IOOK的內(nèi)存空間;初始化RTSP_TCP_DataRecvSMTask數(shù)據(jù)接收任務(wù),也需要開(kāi)啟IOOK內(nèi)存,如果是VS模式則創(chuàng)建RTSP_TCP_DataRecvVSTask數(shù)據(jù)接收任務(wù)。針對(duì)OCN網(wǎng)絡(luò)VOD 2.0協(xié)議設(shè)計(jì)差異的ACK應(yīng)答方式,播放方式。
[0046]簡(jiǎn)易性,為了后續(xù)各個(gè)平臺(tái)統(tǒng)一接口,由瀏覽引擎主動(dòng)構(gòu)造雙向接口類封裝,其他平臺(tái)只需要滿足此雙向接口封裝即可。這個(gè)在android平臺(tái)是比較容易實(shí)現(xiàn)。[0047]整體平移性,瀏覽引擎統(tǒng)一封裝成的DVB接口構(gòu)造成單獨(dú)的.so庫(kù),該庫(kù)隨著瀏覽引擎整體移動(dòng),會(huì)放入到瀏覽引擎的Iib庫(kù)中。該Iib庫(kù)將包含幾個(gè)核心庫(kù)實(shí)現(xiàn)或者庫(kù)接口,VOD實(shí)現(xiàn)的核心庫(kù)也會(huì)將放入此庫(kù)中,當(dāng)然該庫(kù)也會(huì)包含瀏覽引擎的核心庫(kù)和JS解析庫(kù)。
[0048]改接口設(shè)計(jì)主要包含下面幾個(gè)主要的功能:開(kāi)始播放DVB ;停止播放DVB ;
播放DVB時(shí)候聲音控制調(diào)整;重復(fù)播放;播放的窗口大小。
[0049]VOD視頻點(diǎn)播設(shè)計(jì),此部分是該專利發(fā)明核心功能之一,由于VOD視頻點(diǎn)播是基于RTSP協(xié)議,而RSTP又是標(biāo)準(zhǔn)的TCP/IP協(xié)議,故此部分可以完全獨(dú)立開(kāi)發(fā)實(shí)現(xiàn),而不依賴于第三方硬件平臺(tái)或者軟件平臺(tái)。設(shè)計(jì)的思路也體現(xiàn)了簡(jiǎn)易性和整體平移便捷性。由于VOD的播放控制是通過(guò)HTML/JS直接calI windows成員函數(shù)實(shí)現(xiàn),故此部分設(shè)計(jì)是非常復(fù)雜的一個(gè)通信過(guò)程。VOD視頻點(diǎn)播設(shè)計(jì)框架圖6所示。
[0050]簡(jiǎn)易性,為了后續(xù)各個(gè)平臺(tái)統(tǒng)一接口,瀏覽引擎直接包含構(gòu)造此部分接口的封裝和核心庫(kù)的實(shí)現(xiàn),這樣可以單獨(dú)維護(hù)此點(diǎn)播功能的的后面升級(jí)工作。
[0051]整體平移性,瀏覽引擎統(tǒng)一封裝成VOD實(shí)現(xiàn)的核心庫(kù),并將庫(kù)放入核心庫(kù)中。
[0052]由于VOD播放協(xié)議同時(shí)也是由信號(hào)任務(wù)來(lái)支持的,此部分雖然為RTSP標(biāo)準(zhǔn)協(xié)議,但是操作以及的過(guò)程其實(shí)是過(guò)于復(fù)雜的。信號(hào)任務(wù)的創(chuàng)建以及構(gòu)造和window接口函數(shù)一樣,都是基于瀏覽引擎的frame元素來(lái)創(chuàng)建。此部分設(shè)計(jì)是實(shí)現(xiàn)這2個(gè)核心部分的關(guān)鍵所在。
[0053]VOD點(diǎn)播提供下面的服務(wù):VOD內(nèi)核初始化;V0D資源釋放;V0D播放開(kāi)啟;V0D播放控制,比如暫停,快進(jìn),快退;V0D播放節(jié)目的指定時(shí)間點(diǎn)。
[0054]整體平移便捷性的開(kāi)發(fā),此部分是整個(gè)專利發(fā)明的重要部分,不但支持了便捷系統(tǒng)平移,同時(shí)也加強(qiáng)了整個(gè)設(shè)計(jì)的軟件核心技術(shù)保密。但是此部分設(shè)計(jì)是瀏覽器開(kāi)發(fā)的常用過(guò)程,沒(méi)有很特別的技術(shù)門檻,這樣整體設(shè)計(jì)后,可以方便系統(tǒng)設(shè)計(jì)的簽名,對(duì)系統(tǒng)運(yùn)行時(shí)候進(jìn)行保護(hù)。設(shè)計(jì)框架流程圖如圖7所示,這里最主要的是NDK的雙向接口開(kāi)發(fā),此部分非常耗調(diào)試時(shí)間。
[0055]提供標(biāo)準(zhǔn)接口給android⑶I調(diào)用,此部分設(shè)計(jì)主要是考慮整個(gè)廣電機(jī)頂盒中間件功能實(shí)現(xiàn),需要在瀏覽引擎提供標(biāo)準(zhǔn)接口給GUI應(yīng)用部分,這樣方便應(yīng)用在java層直接調(diào)用使用頁(yè)面。這樣設(shè)計(jì)極大方便了機(jī)頂盒的界面設(shè)計(jì),中間件只需要單獨(dú)考慮launcher界面就行了。此部分作為整體設(shè)計(jì)的一部分,也是實(shí)現(xiàn)最簡(jiǎn)單的部分。構(gòu)造一個(gè)java類就可以,提供滿足業(yè)務(wù)需求的網(wǎng)頁(yè)入口函數(shù)。
【權(quán)利要求】
1.一種基于android廣電網(wǎng)絡(luò)瀏覽器中間件系統(tǒng)構(gòu)建方法,其特征在于,具體包括如下步驟: 1)提取webkit瀏覽引擎,在此基礎(chǔ)上構(gòu)筑瀏覽引擎用戶界面與瀏覽引擎基于android的framewor中間層,包括與瀏覽器上層應(yīng)用的界面交互接口以及與瀏覽引擎webcore的信息控制接口 ; 2)在webkit瀏覽引擎基礎(chǔ)上,構(gòu)建Webcore底層接口,向上鏈接framework中間層,向下鏈接瀏覽引擎webcore核心庫(kù); 3)在webkit瀏覽引擎基礎(chǔ)上,裝載網(wǎng)頁(yè)、過(guò)濾網(wǎng)頁(yè)元素; 4)在裝載網(wǎng)頁(yè)結(jié)束后,在webkit瀏覽引擎上構(gòu)建DOM樹(shù),同時(shí)構(gòu)造與擴(kuò)展頭端服務(wù)器網(wǎng)頁(yè)JS使用的windows對(duì)象公用函數(shù)類,使webkit瀏覽引擎直接和JS交互數(shù)據(jù); 5)設(shè)計(jì)內(nèi)嵌VOD播放模塊; 6)在webkit瀏覽引擎基礎(chǔ)上,進(jìn)行增加HTML協(xié)議標(biāo)簽,進(jìn)行私有標(biāo)簽擴(kuò)展; 7)在webkit瀏覽引擎基礎(chǔ)上,對(duì)新增加HTML協(xié)議標(biāo)簽進(jìn)行渲染,構(gòu)筑對(duì)應(yīng)私有標(biāo)簽的元素的渲染部分; 8)設(shè)計(jì)VOD點(diǎn)播RSTP接口,對(duì)瀏覽引擎中構(gòu)造的各部分接口進(jìn)行統(tǒng)一封裝并建立庫(kù); 9)將接口庫(kù)和調(diào)整后的瀏覽引擎一起裝成VOD實(shí)現(xiàn)的核心庫(kù)。
2.根據(jù)權(quán)利要求1所述基于android廣電網(wǎng)絡(luò)瀏覽器中間件系統(tǒng)構(gòu)建方法,其特征在于,所述步驟4)構(gòu)造與擴(kuò)展頭端服務(wù)器網(wǎng)頁(yè)JS使用的windows對(duì)象公用函數(shù)類,構(gòu)造步驟如下: a)DOMWindow類為瀏覽引擎默認(rèn)類對(duì)象,在此基礎(chǔ)上擴(kuò)展類入口 ; b)在DOMWindow.h 中增加 public 成員 CCXJShow *jshow() const ; c)在DOMWindow.cpp 中實(shí)現(xiàn); d)CCXJShow.cpp主體實(shí)現(xiàn)以及CCXJShow.h的類對(duì)象聲明于WebCore核心中,構(gòu)造包括private的控制類屬性對(duì)象,以及public功能實(shí)現(xiàn)類操作; e)設(shè)計(jì)雙向數(shù)據(jù)傳送功能,重新定義網(wǎng)頁(yè)JS的按鍵操作,通過(guò)接口函數(shù)獲取頭端服務(wù)信息; f )將對(duì)象添加入webcore核心編譯mk文件中參與webcore核心庫(kù)編譯。
3.根據(jù)權(quán)利要求1所述基于android廣電網(wǎng)絡(luò)瀏覽器中間件系統(tǒng)構(gòu)建方法,其特征在于,所述步驟5)設(shè)計(jì)內(nèi)嵌VOD播放模塊具體包括: A、設(shè)計(jì)JS的window類對(duì)象; B、實(shí)現(xiàn)VOD播放核心庫(kù); C、通過(guò)外部聲明extern int DVMI_VodHfcPlayStart (DVMI_VOD_HFC_PLAY_INFO*tInfo);執(zhí)行芯片平臺(tái)的stream流解析器; D、RTSP的協(xié)議實(shí)現(xiàn),兼容服務(wù)器端的SM,VS2種模式;初始化RTSP_DealffithCmdAckTask領(lǐng)命響應(yīng)任務(wù),需要開(kāi)啟IOOK的內(nèi)存空間;初始化RTSP_TCP_DataRecvSMTask數(shù)據(jù)接收任務(wù),也需要開(kāi)啟IOOK內(nèi)存,如果是VS模式則創(chuàng)建RTSP_TCP_DataRecvVSTask數(shù)據(jù)接收任務(wù),針對(duì)OCN網(wǎng)絡(luò)VOD 2.0協(xié)議設(shè)計(jì)差異的ACK應(yīng)答方式,播放方式。
4.根據(jù)權(quán)利要求1 所述基于android廣電網(wǎng)絡(luò)瀏覽器中間件系統(tǒng)構(gòu)建方法,其特征在于,所述步驟6)進(jìn)行私有標(biāo)簽擴(kuò)展步驟: O首先要增加tag和對(duì)應(yīng)的HTML元素的對(duì)應(yīng)關(guān)系; 2)然后在webcore下的HTML部分增加對(duì)應(yīng)的HTML元素構(gòu)造文件,實(shí)現(xiàn)HTMLTVElement.cpp 以及 HTMLTVElement.h 類對(duì)象的構(gòu)造,HTMLTVElement 對(duì)象也是WebCore域核心類的成員; 3)實(shí)現(xiàn)類成員的私有狀態(tài)變量以及公有窗口信息接口; 4)對(duì)擴(kuò)展標(biāo)簽屬性進(jìn)行定義。
【文檔編號(hào)】H04N21/4782GK103902293SQ201410121709
【公開(kāi)日】2014年7月2日 申請(qǐng)日期:2014年3月28日 優(yōu)先權(quán)日:2014年3月28日
【發(fā)明者】萬(wàn)乾榮, 王明敏, 朱允斌, 熊俊, 侯宇, 霍佳潔, 鄧勇, 姚忠舟, 談俊, 張文杰, 薛明寶, 楊啟程 申請(qǐng)人:上海下一代廣播電視網(wǎng)應(yīng)用實(shí)驗(yàn)室有限公司