Android平臺兼容本地代碼OpenGL程序的系統(tǒng)及方法
【專利摘要】本發(fā)明公開了一種獲取和傳遞Android應(yīng)用程序生命周期事件及管理OpenGL渲染環(huán)境,實(shí)現(xiàn)Android平臺兼容本地代碼OpenGL程序的系統(tǒng)和方法,所述系統(tǒng)包括:事件處理模塊、本地前后臺管理模塊及OpenGL環(huán)境管理模塊。所述方法應(yīng)用于所述系統(tǒng)之上,所述方法包括:獲取Android應(yīng)用程序生命周期相關(guān)事件,通過事件處理模塊進(jìn)行事件封裝,并傳遞給本地前后臺管理模塊對應(yīng)用程序生命周期進(jìn)行同步管理;通過OpenGL環(huán)境管理模塊自動管理OpenGL環(huán)境,完成Android窗體管理系統(tǒng)與本地OpenGL環(huán)境的無縫對接,解決本地代碼OpenGL程序繪制到Android系統(tǒng)Java層窗體的技術(shù)問題;通過本地前后臺管理模塊,自動對OpenGL環(huán)境進(jìn)行控制,保證OpenGL渲染環(huán)境的正確性;使用線程同步技術(shù),確保Android系統(tǒng)資源管理流程與OpenGL環(huán)境管理流程達(dá)到一致。
【專利說明】Android平臺兼容本地代碼OpenGL程序的系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)嵌入式領(lǐng)域,尤其涉及Android平臺顯示系統(tǒng)領(lǐng)域,更具體的說,本發(fā)明涉及一種Android平臺兼容本地代碼OpenGL程序的系統(tǒng)和方法。
【背景技術(shù)】
[0002]目前由Google公司推出的Android開發(fā)式操作系統(tǒng)自發(fā)布以來已經(jīng)占據(jù)了大量的市場份額,涉及的領(lǐng)域由手機(jī)延伸到智能電視、平板電腦、數(shù)碼相機(jī)、游戲機(jī)等其他諸多領(lǐng)域。由于Android系統(tǒng)的開放性與普及率,越來越多的開發(fā)者投入到Android應(yīng)用的研發(fā)工作中。已經(jīng)在其他平臺擁有成熟軟件產(chǎn)品的公司也紛紛將其產(chǎn)品移植到Android平臺,以獲得更多的用戶。
[0003]Android系統(tǒng)使用Java作為開發(fā)語言,由于Android系統(tǒng)的開放性,各個(gè)硬件廠商對Android框架的底層實(shí)現(xiàn)各不相同,同樣的代碼在不同硬件平臺上表現(xiàn)出來的效果也不一樣,這對開發(fā)工作造成一定的影響。并且Android系統(tǒng)升級更新相當(dāng)頻繁,Android系統(tǒng)API (應(yīng)用編程接口,英文Application Programming Interface,以下稱API)可能變化、失效、甚至被移除,這就造成軟件產(chǎn)品的維護(hù)工作相當(dāng)繁重。例如,針對不同的Android版本都要推出不同的應(yīng)用程序,增加了開發(fā)工作量;不同版本的應(yīng)用程序需要部署到相應(yīng)的平臺,增加了相關(guān)投入。
[0004]OpenGL (開放式圖形庫,英文Open Graphics Library,以下稱OpenGL)作為行業(yè)領(lǐng)域中最為廣泛接納的2D/3D圖形API,獨(dú)立于操作系統(tǒng),具有權(quán)威性和延續(xù)性。幫助開發(fā)者實(shí)現(xiàn)高性能、極具沖擊力的高視覺表現(xiàn)軟件的開發(fā)。支持OpenGL軟件具有很好的移植性,所以獲得非常廣泛的應(yīng)用。目前諸多成熟的軟件產(chǎn)品都使用OpenGL,這些由本地代碼(C、C++)構(gòu)建的軟件產(chǎn)品就面臨移植到Android平臺對接Java接口以及Android窗體管理系統(tǒng)的問題。如果使用本地代碼與OpenGL的軟件產(chǎn)品能快速應(yīng)用到Android平臺,則將降低軟件產(chǎn)品移植的開發(fā)工作,最大化利用技術(shù)儲備,吸引開發(fā)者加入Android系統(tǒng)生態(tài)圈,擴(kuò)大廣品的市場占有率。
[0005]在現(xiàn)有技術(shù)中,發(fā)明申請“基于Android消息處理機(jī)制的視圖切換系統(tǒng)及方法”公開了一種基于Android消息處理機(jī)制的視圖切換系統(tǒng)及方法,可以實(shí)現(xiàn)Android手機(jī)和采用Android處理系統(tǒng)的手持設(shè)備的視圖切換功能,滿足用戶對應(yīng)用程序可視化效果的需求,但不能實(shí)現(xiàn)Android平臺兼容本地代碼OpenGL程序的功能而達(dá)到簡化移植的目的。
[0006]另外,發(fā)明申請“在安卓系統(tǒng)下運(yùn)行標(biāo)準(zhǔn)C程序的方法和裝置”公開了一種解決C程序移植困難的問題,但必須通過在Android系統(tǒng)中再搭建一個(gè)標(biāo)準(zhǔn)C庫的工作環(huán)境,該發(fā)明也不能實(shí)現(xiàn)Android平臺兼容本地代碼OpenGL程序的功能而達(dá)到簡化移植的目的。
【發(fā)明內(nèi)容】
[0007]本發(fā)明的目的之一在于解決上述不足,提供一種獲取和傳遞Android應(yīng)用程序生命周期事件及管理OpenGL渲染環(huán)境,實(shí)現(xiàn)Android平臺兼容本地代碼OpenGL程序的系統(tǒng)和方法,以達(dá)到簡化移植的目的。
[0008]為解決上述的技術(shù)問題,本發(fā)明采用以下技術(shù)方案:
[0009]本發(fā)明一方面提供了一種獲取和傳遞Android應(yīng)用程序生命周期事件及管理OpenGL渲染環(huán)境,以實(shí)現(xiàn)Android平臺兼容本地代碼OpenGL程序的系統(tǒng),所述系統(tǒng)包括:事件處理模塊、本地前后臺管理模塊及OpenGL環(huán)境管理模塊。其中,
[0010]事件處理模塊,用于將獲取到的事件封裝成可供底層識別的數(shù)據(jù)格式,并將該事件數(shù)據(jù)保存到隊(duì)列中等待本地前后臺管理模塊進(jìn)行處理。
[0011]本地前后臺管理模塊,用于從所述事件處理模塊獲取事件數(shù)據(jù),同步Android應(yīng)用主線程與OpenGL處理線程,通知OpenGL環(huán)境管理模塊進(jìn)行相應(yīng)處理。
[0012]OpenGL環(huán)境管理模塊,用于管理OpenGL環(huán)境相關(guān)的初始化、銷毀以及資源的釋放和重新獲取,降低本地代碼OpenGL程序與Android窗體系統(tǒng)的稱合度。
[0013]所述事件處理模塊獲取Android應(yīng)用程序生命周期相關(guān)事件,通過所述事件處理模塊進(jìn)行事件封裝,并傳遞給所述本地前后臺管理模塊對應(yīng)用程序生命周期進(jìn)行同步管理,實(shí)現(xiàn)了對生命周期相關(guān)事件的捕捉,并對事件數(shù)據(jù)進(jìn)行封裝以及將隊(duì)列送入等待處理。
[0014]所述OpenGL環(huán)境管理模塊自動管理OpenGL環(huán)境相關(guān)的初始化、銷毀、資源的釋放及重新獲取,所述OpenGL環(huán)境管理模塊完成Android窗體管理系統(tǒng)與本地OpenGL環(huán)境的無縫對接,解決本地代碼OpenGL程序繪制到Android系統(tǒng)Java層窗體的技術(shù)問題。
[0015]在Android應(yīng)用進(jìn)行前后臺切換時(shí),通過所述本地前后臺管理模塊,自動對OpenGL環(huán)境進(jìn)行控制,所述控制的方式至少包括繪圖表面(Surface)的創(chuàng)建和銷毀、渲染的暫停和恢復(fù)等,保證OpenGL渲染環(huán)境的正確性。
[0016]所述事件處理模塊、所述本地前后臺管理模塊及所述OpenGL環(huán)境管理模塊中使用線程同步技術(shù),確保Android系統(tǒng)資源管理流程與OpenGL環(huán)境管理流程達(dá)到一致。
[0017]所述事件處理模塊、所述本地前后臺管理模塊及所述OpenGL環(huán)境管理模塊使用JNI (Java 本地接口,英文 Java Native Interface,以下稱 JNI)技術(shù),作為 Android Java 層與本地代碼交互的橋梁,所述事件處理模塊、所述本地前后臺管理模塊及所述OpenGL環(huán)境管理模塊完全代替開發(fā)者完成了 Java與本地代碼接口的相互轉(zhuǎn)換。
[0018]本發(fā)明另一方面提供了一種獲取和傳遞Android應(yīng)用程序生命周期事件及管理OpenGL渲染環(huán)境,實(shí)現(xiàn)Android平臺兼容本地代碼OpenGL程序的方法,所述方法包括:
[0019]通過事件處理模塊獲取Android應(yīng)用程序生命周期相關(guān)事件,并通過所述事件處理模塊進(jìn)行事件封裝后,傳遞給本地前后臺管理模塊對應(yīng)用程序生命周期進(jìn)行同步管理,實(shí)現(xiàn)了對生命周期相關(guān)事件的捕捉,并對事件數(shù)據(jù)進(jìn)行封裝以及將隊(duì)列送入等待處理。
[0020]通過OpenGL環(huán)境管理模塊自動管理OpenGL環(huán)境相關(guān)的初始化、銷毀、資源的釋放及重新獲取,完成Android窗體管理系統(tǒng)與本地OpenGL環(huán)境的無縫對接,解決本地代碼OpenGL程序繪制到Android系統(tǒng)Java層窗體的技術(shù)問題。
[0021]在Android應(yīng)用程序進(jìn)行前后臺切換時(shí),通過所述本地前后臺管理模塊,自動對OpenGL環(huán)境進(jìn)行控制,所述控制的方式至少包括繪圖表面(Surface)的創(chuàng)建和銷毀、渲染的暫停和恢復(fù)等,保證OpenGL渲染環(huán)境的正確性。
[0022]通過在所述事件處理模塊、所述本地前后臺管理模塊及所述OpenGL環(huán)境管理模塊中使用線程同步技術(shù),確保Android系統(tǒng)資源管理流程與OpenGL環(huán)境管理流程達(dá)到一致。
[0023]所述事件處理模塊、所述本地前后臺管理模塊及所述OpenGL環(huán)境管理模塊使用Java JNI技術(shù),作為Android Java層與本地代碼交互的橋梁,所述事件處理模塊、所述本地前后臺管理模塊及所述OpenGL環(huán)境管理模塊完全代替開發(fā)者完成了 Java與本地代碼接口的相互轉(zhuǎn)換。
[0024]本發(fā)明利用Java JNI連接C、C++本地代碼與Android Java層API,配合系統(tǒng)中所述事件處理模塊、所述本地前后臺管理模塊及所述OpenGL環(huán)境管理模塊完成數(shù)據(jù)交換與生命周期處理,從而實(shí)現(xiàn)完善的Android應(yīng)用功能。
[0025]與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果之一是:降低了本地代碼軟件產(chǎn)品與Android系統(tǒng)Java接口及Android窗體管理系統(tǒng)的稱合度,達(dá)到了簡化移植的目的。
【專利附圖】
【附圖說明】
[0026]圖1為本發(fā)明實(shí)施例的系統(tǒng)結(jié)構(gòu)框圖;
[0027]圖2為本發(fā)明實(shí)施例的Android應(yīng)用主線程處理流程圖;
[0028]圖3為本發(fā)明實(shí)施例的應(yīng)用程序前后臺切換處理流程圖;
[0029]圖4為本發(fā)明實(shí)施例的OpenGL初始化線程處理流程圖。
【具體實(shí)施方式】
[0030]下面結(jié)合附圖和實(shí)施例對本發(fā)明作進(jìn)一步闡述。
[0031]本發(fā)明一個(gè)實(shí)施例提供了一種獲取和傳遞Android應(yīng)用程序生命周期事件及管理OpenGL渲染環(huán)境,以實(shí)現(xiàn)Android平臺兼容本地代碼OpenGL程序的系統(tǒng)100。圖1為本發(fā)明實(shí)施例的系統(tǒng)結(jié)構(gòu)框圖,所述系統(tǒng)包括:事件處理模塊101、本地前后臺管理模塊102、OpenGL環(huán)境管理模塊103。其中,
[0032]事件處理模塊101,用于將獲取到的事件封裝成可供底層識別的數(shù)據(jù)格式,并將該事件數(shù)據(jù)保存到隊(duì)列中等待本地前后臺管理模塊102進(jìn)行處理。
[0033]本地前后臺管理模塊102,用于從所述事件處理模塊獲取事件數(shù)據(jù),同步Android應(yīng)用主線程與OpenGL處理線程,通知OpenGL環(huán)境管理模塊103進(jìn)行相應(yīng)處理。
[0034]OpenGL環(huán)境管理模塊103,用于管理OpenGL環(huán)境相關(guān)的初始化、銷毀以及資源的釋放和重新獲取,降低本地代碼OpenGL程序與Android窗體系統(tǒng)的稱合度。
[0035]在本發(fā)明的另一實(shí)施例中,所述事件處理模塊101獲取Android應(yīng)用程序生命周期相關(guān)事件,并通過所述事件處理模塊101進(jìn)行事件封裝后,傳遞給所述本地前后臺管理模塊102對應(yīng)用程序生命周期進(jìn)行同步管理,實(shí)現(xiàn)了對生命周期相關(guān)事件的捕捉,并對事件數(shù)據(jù)進(jìn)行封裝以及將隊(duì)列送入等待處理。
[0036]所述OpenGL環(huán)境管理模塊103自動管理OpenGL環(huán)境相關(guān)的初始化、銷毀、資源的釋放及重新獲取,并完成Android窗體管理系統(tǒng)與本地OpenGL環(huán)境的無縫對接,解決本地代碼OpenGL程序繪制到Android系統(tǒng)Java層窗體的技術(shù)問題。
[0037]在Android應(yīng)用進(jìn)行前后臺切換時(shí),通過所述本地前后臺管理模塊102,自動對OpenGL環(huán)境進(jìn)行控制,所述控制的方式至少包括繪圖表面(Surface)的創(chuàng)建和銷毀、渲染的暫停和恢復(fù)等,保證OpenGL渲染環(huán)境的正確性。[0038]在所述事件處理模塊101、所述本地前后臺管理模塊102及所述OpenGL環(huán)境管理模塊103中使用線程同步技術(shù),確保Android系統(tǒng)資源管理流程與OpenGL環(huán)境管理流程達(dá)
到一致。
[0039]所述事件處理模塊101、所述本地前后臺管理模塊102及所述OpenGL環(huán)境管理模塊103使用JNI技術(shù),作為Android Java層與本地代碼交互的橋梁,所述事件處理模塊101、所述本地前后臺管理模塊102及所述OpenGL環(huán)境管理模塊103完全代替開發(fā)者完成了 Java與本地代碼接口的相互轉(zhuǎn)換。
[0040]另一方面,本發(fā)明的另一類型的實(shí)施例是一種獲取和傳遞Android應(yīng)用程序生命周期事件及管理OpenGL渲染環(huán)境,實(shí)現(xiàn)Android平臺兼容本地代碼OpenGL程序的方法,所述方法包括:
[0041]通過所述事件處理模塊101獲取Android應(yīng)用程序生命周期相關(guān)事件,并通過所述事件處理模塊101進(jìn)行事件封裝后,傳遞給所述本地前后臺管理模塊102對應(yīng)用程序生命周期進(jìn)行同步管理,實(shí)現(xiàn)了對生命周期相關(guān)事件的捕捉,并對事件數(shù)據(jù)進(jìn)行封裝以及將隊(duì)列送入等待處理。
[0042]通過所述OpenGL環(huán)境管理模塊103自動管理OpenGL環(huán)境相關(guān)的初始化、銷毀、資源的釋放及重新獲取,并完成Android窗體管理系統(tǒng)與本地OpenGL環(huán)境的無縫對接,解決本地代碼OpenGL程序繪制到Android系統(tǒng)Java層窗體的技術(shù)問題。
[0043]在Android應(yīng)用程序進(jìn)行前后臺切換時(shí),通過所述本地前后臺管理模塊102,自動對OpenGL環(huán)境進(jìn)行控制,所述控制的方式至少包括繪圖表面(Surface)的創(chuàng)建和銷毀、渲染的暫停和恢復(fù)等,保證OpenGL渲染環(huán)境的正確性。
[0044]通過在所述事件處理模塊101、所述本地前后臺管理模塊102及所述OpenGL環(huán)境管理模塊103中使用線程同步技術(shù),確保Android系統(tǒng)資源管理流程與OpenGL環(huán)境管理流程達(dá)到一致。
[0045]所述事件處理模塊101、所述本地前后臺管理模塊102及所述OpenGL環(huán)境管理模塊103使用JNI技術(shù),作為Android Java層與本地代碼交互的橋梁,所述事件處理模塊101、所述本地前后臺管理模塊102及所述OpenGL環(huán)境管理模塊103完全代替開發(fā)者完成了 Java與本地代碼接口的相互轉(zhuǎn)換。
[0046]在本實(shí)施例中,當(dāng)Android應(yīng)用程序啟動以后,將開辟線程同時(shí)進(jìn)行兩項(xiàng)任務(wù),其中,
[0047]任務(wù)一是Android應(yīng)用程序主線程,其步驟參考圖2所示如下:
[0048]步驟一,Android應(yīng)用程序啟動SlOl:創(chuàng)建Android窗體;
[0049]步驟二,監(jiān)視Android生命周期變化S102:Android主線程在創(chuàng)建窗體完成后即開始監(jiān)聽來自Android系統(tǒng)各類生命周期相關(guān)的事件;
[0050]步驟三,判斷是否有生命周期變化事件S103:當(dāng)收到事件后,將事件傳遞到事件處理模塊101,否則繼續(xù)監(jiān)聽;
[0051]步驟四,所述事件處理模塊101將事件進(jìn)行封裝并等待處理S104:事件將被封裝成可供底層識別的數(shù)據(jù)格式,然后將經(jīng)過封裝的事件保存到隊(duì)列中;
[0052]步驟五,將事件分發(fā)到本地前后臺管理模塊102做相應(yīng)處理S105:在OpenGL輪詢中,所述事件處理模塊101將事件分發(fā)到所述本地前后臺管理模塊102,所述本地前后臺管理模塊102根據(jù)事件的類別,選擇感興趣的事件進(jìn)行相應(yīng)處理(參考圖3所示):
[0053]A:當(dāng)應(yīng)用程序從前臺切換到后臺時(shí),掛起Android主線程,暫停OpenGL渲染,釋放OpenGL相關(guān)資源;
[0054]B:當(dāng)應(yīng)用程序從后臺切換到前臺時(shí),掛起Android主線程,重新獲取OpenGL相關(guān)資源,并恢復(fù)OpenGL渲染。
[0055]步驟六,Android應(yīng)用程序恢復(fù)處理流程S106:所述本地前后臺管理模塊102處理完成后,恢復(fù)Android主線程中的應(yīng)用程序處理流程,繼續(xù)進(jìn)行其他Android系統(tǒng)相關(guān)處理工作。
[0056]任務(wù)二是OpenGL處理線程,其步驟參考圖4所示如下:
[0057]步驟一,Android應(yīng)用程序啟動S201:創(chuàng)建Android窗體;
[0058]步驟二,倉Il建繪圖線程,等待Android創(chuàng)建窗體繪圖表面(Surface) S202:OpenGL繪圖線程創(chuàng)建后將等待Android創(chuàng)建窗體繪圖表面(Surface);
[0059]步驟三,判斷Android窗體繪圖表面(Surface)是否創(chuàng)建成功S203:當(dāng)窗體繪圖表面(Surface)創(chuàng)建成功則繼續(xù)執(zhí)行,否則一直等待直至窗體繪圖表面(Surface)創(chuàng)建成功;
[0060]步驟四,所述OpenGL環(huán)境管理模塊103進(jìn)行環(huán)境初始化S204:當(dāng)窗體繪圖表面(Surface)創(chuàng)建成功后通知所述OpenGL環(huán)境管理模塊103對OpenGL進(jìn)行環(huán)境初始化,完成繪圖前的準(zhǔn)備工作;
[0061]步驟五,進(jìn)入本地OpenGL程序處理循環(huán)S205 =OpenGL環(huán)境初始化完成后即將控制權(quán)交予本地OpenGL程序,本地OpenGL程序進(jìn)入渲染循環(huán),進(jìn)行程序處理和圖形渲染。
[0062]通過上述步驟后,Android系統(tǒng)顯示相關(guān)的工作將完全交由OpenGL本地代碼管理和控制,降低了本地代碼軟件產(chǎn)品與Android系統(tǒng)Java接口及Android窗體管理系統(tǒng)的率禹合度,達(dá)到了簡化移植的目的。
[0063]通過上述與現(xiàn)有技術(shù)的區(qū)別,使得本發(fā)明還具有如下特點(diǎn):第一,采用跨語言交互技術(shù),允許Java代碼和其他語言寫的代碼進(jìn)行交互,實(shí)現(xiàn)了本地代碼與Android Java的相互調(diào)用;第二,采用數(shù)據(jù)封裝與傳遞技術(shù),Android系統(tǒng)獲取到的生命周期相關(guān)事件,如前后臺切換、應(yīng)用暫停、恢復(fù)事件等通過消息發(fā)送到本地代碼層,再傳入到本地程序框架中;第三,采用線程同步技術(shù),管理和控制Android應(yīng)用主線程與本地代碼線程的同步問題,保證了在Android應(yīng)用程序的生命周期處理過程中本地代碼正確地做出與之相對應(yīng)的處理。第四,采用OpenGL繪制環(huán)境管理技術(shù),統(tǒng)一 Android窗體管理系統(tǒng)與OpenGL繪圖上下文環(huán)境,確保OpenGL繪制環(huán)境的正確性。
[0064]盡管這里參照本發(fā)明的一個(gè)解釋性實(shí)施例對本發(fā)明進(jìn)行了描述,但是,應(yīng)該理解,本領(lǐng)域技術(shù)人員可以設(shè)計(jì)出很多其他的修改和實(shí)施方式,這些修改和實(shí)施方式將落在本申請公開的原則范圍和精神之內(nèi)。更具體地說,在本申請公開、附圖和權(quán)利要求的范圍內(nèi),可以對主題組合布局的組成部件和/或布局進(jìn)行多種變型和改進(jìn)。除了對組成部件和/或布局進(jìn)行的變型和改進(jìn)外,對于本領(lǐng)域技術(shù)人員來說,其他的用途也將是明顯的。
【權(quán)利要求】
1.一種獲取和傳遞Android應(yīng)用程序生命周期事件及管理OpenGL渲染環(huán)境,以實(shí)現(xiàn)Android平臺兼容本地代碼OpenGL程序的系統(tǒng),包括:事件處理模塊、本地前后臺管理模塊及OpenGL環(huán)境管理模塊,其中, 事件處理模塊,用于將獲取到的事件封裝成可供底層識別的數(shù)據(jù)格式,并將所述事件數(shù)據(jù)保存到隊(duì)列中等待所述本地前后臺管理模塊進(jìn)行處理; 本地前后臺管理模塊,用于從所述事件處理模塊獲取事件數(shù)據(jù),同步Android應(yīng)用主線程與OpenGL處理線程,并通知所述OpenGL環(huán)境管理模塊進(jìn)行相應(yīng)處理; OpenGL環(huán)境管理模塊,用于管理OpenGL環(huán)境相關(guān)的初始化、銷毀以及資源的釋放和重新獲取。
2.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于:所述事件處理模塊獲取Android應(yīng)用程序生命周期相關(guān)事件,通過所述事件處理模塊進(jìn)行事件封裝,并傳遞給所述本地前后臺管理模塊對應(yīng)用程序生命周期進(jìn)行同步管理。
3.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于:所述OpenGL環(huán)境管理模塊自動管理OpenGL環(huán)境相關(guān)的初始化、銷毀、資源的釋放及重新獲取,所述OpenGL環(huán)境管理模塊完成Android窗體管理系統(tǒng)與本地OpenGL環(huán)境的無縫對接。
4.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于:在Android應(yīng)用進(jìn)行前后臺切換時(shí),所述本地前后臺管理模塊自動對OpenGL環(huán)境進(jìn)行控制,所述控制的方式至少包括繪圖表面(Surface)的創(chuàng)建和銷毀、渲染的暫停和恢復(fù)。
5.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于:所述事件處理模塊、所述本地前后臺管理模塊及所述OpenGL環(huán)境管理模塊使用線程同步技術(shù)。
6.根據(jù)權(quán)利要求1至5中任一權(quán)利要求所述的系統(tǒng),其特征在于:所述事件處理模塊、所述本地前后臺管理模塊及所述OpenGL環(huán)境管理模塊使用Java本地接口,作為AndroidJava層與本地代碼交互的橋梁。
7.一種獲取和傳遞Android應(yīng)用程序生命周期事件及管理OpenGL渲染環(huán)境,實(shí)現(xiàn)Android平臺兼容本地代碼OpenGL程序的方法,包括: 通過事件處理模塊獲取Android應(yīng)用程序生命周期相關(guān)事件,并所述事件處理模塊進(jìn)行事件封裝后,傳遞給本地前后臺管理模塊對應(yīng)用程序生命周期進(jìn)行同步管理; 通過OpenGL環(huán)境管理模塊自動管理OpenGL環(huán)境相關(guān)的初始化、銷毀、資源的釋放及重新獲取,所述OpenGL環(huán)境管理模塊完成Android窗體管理系統(tǒng)與本地OpenGL環(huán)境的無縫對接; 在Android應(yīng)用程序進(jìn)行前后臺切換時(shí),通過所述本地前后臺管理模塊,自動對OpenGL環(huán)境進(jìn)行控制,所述控制的方式至少包括繪圖表面(Surface)的創(chuàng)建和銷毀、渲染的暫停和恢復(fù)。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于:所述事件處理模塊、所述本地前后臺管理模塊及所述OpenGL環(huán)境管理模塊使用線程同步技術(shù)。
9.根據(jù)權(quán)利要求7或8所述的方法,其特征在于:所述事件處理模塊、所述本地前后臺管理模塊及所述OpenGL環(huán)境管理模塊使用Java本地接口,作為Android Java層與本地代碼交互的橋梁。
【文檔編號】G06F9/44GK104035768SQ201410238502
【公開日】2014年9月10日 申請日期:2014年5月30日 優(yōu)先權(quán)日:2014年5月30日
【發(fā)明者】李熊發(fā), 張帆, 陳錫林, 胡軍, 王琴, 唐駿 申請人:四川長虹電器股份有限公司