專利名稱:基于Brew的一種動態(tài)用戶界面的體系結(jié)構(gòu)和實現(xiàn)方法
專利說明基于Brew的一種動態(tài)用戶界面的體系結(jié)構(gòu)和實現(xiàn)方法 本發(fā)明涉及計算機(jī)、網(wǎng)絡(luò)通信和電話技術(shù)領(lǐng)域,尤其涉及一種基于BREW平臺的動態(tài)用戶界面的體系結(jié)構(gòu)和實現(xiàn)方法。BREW--------是無線二進(jìn)制運(yùn)行環(huán)境(Binary Runtime Environment for Wireless),是高通公司2001年推出的基于CDMA網(wǎng)絡(luò)“無線互聯(lián)網(wǎng)發(fā)射平臺”上增值業(yè)務(wù)開發(fā)運(yùn)行的基本平臺。目前在國內(nèi),只有中國聯(lián)通的CDMA手機(jī)支持BREW平臺。
“神奇寶典”BREW業(yè)務(wù),是中國聯(lián)通推出的,基于CDMA 1X強(qiáng)大的移動通信功能,在BREW技術(shù)平臺上,提供高速數(shù)據(jù)下載業(yè)務(wù)。用戶通過下載BREW應(yīng)用軟件到BREW終端上運(yùn)行來實現(xiàn)眾多功能,用戶的手機(jī)可以下載各種功能的軟件來實現(xiàn)手機(jī)的個性化。通過BREW接口功能,供應(yīng)商可以提供成套的完整的資訊、商務(wù)、娛樂BREW應(yīng)用軟件供用戶下載。
“神奇寶典”BREW業(yè)務(wù)的核心是“無線數(shù)據(jù)下載”,BREW手機(jī)可以從網(wǎng)上下載游戲、動漫畫、小小說等,也可進(jìn)行各種在線應(yīng)用,如聯(lián)網(wǎng)游戲、收發(fā)郵件、證券炒股、信息查詢等。
基于BREW平臺的各種BREW應(yīng)用,都需要經(jīng)過開發(fā)、測試、業(yè)務(wù)審核、上傳高通服務(wù)器和做目錄等幾個環(huán)節(jié),才能供BREW手機(jī)用戶下載使用。
在現(xiàn)有技術(shù)中,BREW平臺下應(yīng)用體系結(jié)構(gòu)模型如
圖1所示,BREW終端(200)如果下載或是更新升級軟件只能通過移動通信網(wǎng)絡(luò)與應(yīng)用服務(wù)器(300)進(jìn)行通信來實現(xiàn)。其中,應(yīng)用服務(wù)器(300)是由高通公司提供的,軟件開發(fā)商開發(fā)出來的BREW應(yīng)用軟件經(jīng)過嚴(yán)格的測試(為了保證BREW應(yīng)用及BREW終端的正常運(yùn)行而必須進(jìn)行的測試)后,才能上傳到該服務(wù)器上,供BREW終端(200)下載使用。這樣的體系結(jié)構(gòu)就決定了軟件開發(fā)商提交一個新的應(yīng)用上線都要經(jīng)過很多程序,比如開發(fā)、內(nèi)測、UBT測試、業(yè)務(wù)評審、上傳應(yīng)用服務(wù)器、做目錄等步驟,才能與BREW手機(jī)用戶見面,從而花費(fèi)了很多的精力和時間;如果軟件開發(fā)商希望對已經(jīng)上線的BREW應(yīng)用進(jìn)行軟件升級,同樣需要走相同煩瑣的流程。
如圖2所示,傳統(tǒng)的BREW終端程序包括應(yīng)用執(zhí)行層(203)、BREW API層(204)、OEM層(205)和BREW終端硬件層(206);BREW應(yīng)用軟件中的可執(zhí)行程序和UI腳本文件都固化在應(yīng)用執(zhí)行層(203)中。
BREW終端硬件層(206)由硬件芯片組成,完成特定的功能,比如硬件支持語音通話和短信等功能,位于體系結(jié)構(gòu)的最底層;OEM層(Original Equipment Manufacture原始設(shè)備制造商)(205),是由手機(jī)開發(fā)廠家開發(fā)的介于BREW API層(204)和BREW終端硬件層(206)之間的一個層,負(fù)責(zé)驅(qū)動和管理硬件設(shè)備。同時把硬件的使用和操作進(jìn)行封裝,使上層不必關(guān)心具體如何管理和操作硬件的細(xì)節(jié);提供OEM接口供BREW API層(204)調(diào)用。
BREW API層(204)是按高通公司的要求統(tǒng)一實現(xiàn)的接口(Application ProgrammingInterface應(yīng)用程序編程接口),方便BREW應(yīng)用開發(fā)商在BREW API層(204)上進(jìn)行軟件和應(yīng)用開發(fā),該接口與手機(jī)機(jī)型和屏幕等硬件參數(shù)無關(guān),可以方便進(jìn)行移植開發(fā)等。
應(yīng)用執(zhí)行層(203),就是開發(fā)商基于BREW平臺具體開發(fā)出的應(yīng)用,可以在BREW平臺上運(yùn)行執(zhí)行,完成軟件功能。
目前的BREW應(yīng)用開發(fā)主要存在以下缺點(diǎn)1、BREW應(yīng)用程序的UI(User Interface用戶界面)和功能邏輯是固定不能改變的,是固化在應(yīng)用程序的執(zhí)行文件中的。如果軟件開發(fā)者想改變BREW應(yīng)用的UI和功能邏輯,或是要修改在BREW應(yīng)用程序中發(fā)現(xiàn)的BUG(程序中微小的錯誤),除了重新測試提交升級版本之外,再沒有其他的辦法可用,這就導(dǎo)致BREW應(yīng)用的擴(kuò)展性和可維護(hù)性差。
2、開發(fā)中重復(fù)工作過多。由于BREW應(yīng)用上線需要通過聯(lián)通的UBT測試,UBT測試是有一套嚴(yán)格的規(guī)范的,尤其是對UI部分和功能方面都有很高的要求,所以在UI設(shè)計開發(fā)中有很多重復(fù)的工作,比如積分模塊,幫助和關(guān)于模塊的開發(fā),幾乎都是每個BREW應(yīng)用必須要面對的工作。每個應(yīng)用都重新開發(fā)相同的模塊,增加了潛在的系統(tǒng)不穩(wěn)定性。
3、對已經(jīng)上線的BREW應(yīng)用進(jìn)行升級,也需要經(jīng)過和新應(yīng)用上線一樣流程,效率很低,影響B(tài)REW應(yīng)用升級的速度,BREW手機(jī)用戶不能更快體驗到升級版軟件所帶來的新的樂趣;若發(fā)現(xiàn)BREW應(yīng)用中存在新的問題,軟件開發(fā)商也不能對BREW手機(jī)用戶的要求做出及時的反應(yīng)。本發(fā)明要解決的技術(shù)問題是提供基于Brew的一種動態(tài)用戶界面的體系結(jié)構(gòu)和實現(xiàn)方法,一方面,避免了在Brew應(yīng)用軟件開發(fā)中,對基本模塊的重復(fù)開發(fā)工作,加快Brew應(yīng)用軟件開發(fā)的速度,且能夠提高系統(tǒng)的穩(wěn)定性;另一方面,避免了對已經(jīng)上線的BREW應(yīng)用進(jìn)行升級所必經(jīng)的煩瑣流程,增強(qiáng)了BREW應(yīng)用的擴(kuò)展性和可維護(hù)性,使BREW手機(jī)用戶能在第一時間體驗到升級版軟件所帶來的新的樂趣。
本發(fā)明是通過下面的技術(shù)方案來實現(xiàn)的基于BREW的一種動態(tài)用戶界面的實現(xiàn)方法,包括以下步驟1001、BREW終端通過internet網(wǎng)絡(luò)從應(yīng)用腳本服務(wù)器下載更新的BREW應(yīng)用的UI腳本文件;1002、BREW終端中的UI腳本解釋層對所述UI腳本文件進(jìn)行解釋,對UI的配置數(shù)據(jù)結(jié)構(gòu)進(jìn)行填充,生成一個UI描述表;1003、BREW終端中的應(yīng)用執(zhí)行層從所述UI描述表入口取得UI描述,對UI進(jìn)行繪制,并在BREW終端屏幕上顯示所繪制的主程序菜單界面。
步驟1001中進(jìn)一步包括2001、所述BREW終端通過移動通信網(wǎng)絡(luò),從應(yīng)用服務(wù)器下載BREW應(yīng)用;2002、當(dāng)BREW終端運(yùn)行所述BREW應(yīng)用時,BREW終端采用TCP方式通過internet網(wǎng)絡(luò)與應(yīng)用腳本服務(wù)器進(jìn)行連接,以檢查應(yīng)用腳本服務(wù)器中是否存在該BREW應(yīng)用更新的UI腳本文件;若存在,則BREW終端下載該更新的UI腳本文件替換原有的UI腳本文件;否則,BREW終端中的UI腳本文件保持不變。
步驟2002中進(jìn)一步包括3001、BREW終端與應(yīng)用腳本服務(wù)器進(jìn)行連接時,應(yīng)用腳本服務(wù)器對BREW應(yīng)用的名稱、有效性和安全性進(jìn)行檢查;3002、在通過安全檢查后,再對所述BREW應(yīng)用的版本進(jìn)行檢查,若有更新的版本,則向BREW終端發(fā)送版本升級的提示信息;3003、BREW終端對該提示信息進(jìn)行確認(rèn),并與應(yīng)用腳本服務(wù)器進(jìn)行通訊,從而獲取更新的BREW應(yīng)用的UI腳本文件。
步驟3003中進(jìn)一步包括應(yīng)用腳本服務(wù)器根據(jù)BREW終端的確認(rèn)信息所提供的BREW終端平臺號,選定與該BREW終端相匹配的更新的UI腳本文件下發(fā)給BREW終端。
步驟1002中UI腳本解釋層對所述UI腳本文件進(jìn)行解釋進(jìn)一步包括UI腳本解釋層讀取UI腳本文件到緩沖區(qū),并對UI腳本文件進(jìn)行詞法分析和語法分析。
步驟1003中進(jìn)一步包括當(dāng)有事件觸發(fā)時,應(yīng)用執(zhí)行層通過當(dāng)前UI描述表找到主菜單界面下對該事件的處理方法,并把描述指針指向UI描述表中與該處理方法對應(yīng)的索引值,從而獲取該狀態(tài)事件的UI描述。
基于BREW的一種動態(tài)用戶界面的體系結(jié)構(gòu),包括通過移動通信網(wǎng)絡(luò)進(jìn)行通訊的應(yīng)用服務(wù)器和BREW終端,所述BREW終端可從應(yīng)用服務(wù)器下載BREW應(yīng)用,所述BREW終端包括應(yīng)用執(zhí)行層、BREWAPI層、OEM層及BREW終端硬件層,還包括通過internet網(wǎng)絡(luò)與BREW終端進(jìn)行通訊的應(yīng)用腳本服務(wù)器,所述應(yīng)用腳本服務(wù)器向BREW終端提供更新的BREW應(yīng)用的UI腳本文件。
本發(fā)明的進(jìn)一步改進(jìn)在于,所述BREW終端還包括UI腳本描述層和UI腳本解釋層,所述UI腳本解釋層對UI腳本描述層進(jìn)行解釋,生成UI描述表,供應(yīng)用執(zhí)行層調(diào)用并執(zhí)行。
本發(fā)明的進(jìn)一步改進(jìn)在于所述UI腳本描述層可由所述應(yīng)用腳本服務(wù)器提供更新的BREW應(yīng)用的UI腳本文件來替換。
本發(fā)明的進(jìn)一步改進(jìn)在于所述應(yīng)用腳本服務(wù)器對BREW終端中BREW應(yīng)用的名稱、有效性和安全性進(jìn)行檢查,保證應(yīng)用腳本服務(wù)器與BREW終端之間通訊的安全性。
本發(fā)明的進(jìn)一步改進(jìn)在于所述應(yīng)用腳本服務(wù)器檢測其中是否存在更新的BREW應(yīng)用的UI腳本文件,以確認(rèn)是否能對BREW終端的BREW應(yīng)用版本進(jìn)行升級。
本發(fā)明的進(jìn)一步改進(jìn)在于所述應(yīng)用腳本服務(wù)器根據(jù)BREW終端平臺號,選定與該BREW終端相匹配的更新的UI腳本文件下發(fā)給該BREW終端。
由于采用了以上技術(shù)方案,把UI腳本描述層和UI腳本解釋層從應(yīng)用執(zhí)行層中分離出來,在對BREW應(yīng)用軟件進(jìn)行升級時,BREW終端只需從應(yīng)用腳本服務(wù)器下載更新的UI腳本文件替換掉原有的UI腳本文件,即可實現(xiàn)該BREW應(yīng)用軟件的升級,這就避免了傳統(tǒng)BREW應(yīng)用軟件進(jìn)行升級所必經(jīng)的如UBT測試等煩瑣的流程,加快了BREW應(yīng)用升級軟件的開發(fā)速度,節(jié)約了時間,使BREW終端用戶可以及時方便地體驗BREW應(yīng)用升級軟件帶來的樂趣,同時增加了BREW應(yīng)用的自由度、可擴(kuò)展性;在進(jìn)行BREW平臺應(yīng)用程序的開發(fā)中,可以使用容易書寫且易于理解的UI腳本來實現(xiàn),不需要重新編寫程序的代碼;在跨平臺移植BREW應(yīng)用時更加方便,此時僅僅需要修改執(zhí)行文件中的UI腳本解釋層,而不需要更新UI腳本文件,即可實現(xiàn)BREW應(yīng)用的移植。圖1是現(xiàn)有的BREW平臺下的應(yīng)用體系結(jié)構(gòu)模型圖。
圖2是傳統(tǒng)的BREW終端程序模塊圖。
圖3是本發(fā)明的動態(tài)用戶界面結(jié)構(gòu)體系模型圖。
圖4是本發(fā)明的BREW終端程序模塊圖。
圖5是一個標(biāo)準(zhǔn)的BREW游戲主菜單界面圖。
圖6是UI腳本解釋層的工作流程圖。
圖7是動態(tài)用戶界面實現(xiàn)的流程圖。下面根據(jù)附圖和具體實施例對本發(fā)明作進(jìn)一步地闡述。
如圖3所示,本發(fā)明的動態(tài)用戶界面結(jié)構(gòu)體系圖是在現(xiàn)有技術(shù)的基礎(chǔ)之上,增加了應(yīng)用腳本服務(wù)器100,其中,應(yīng)用腳本服務(wù)器100與BREW終端200之間的通訊是通過internet互聯(lián)網(wǎng)來完成的,應(yīng)用腳本服務(wù)器100中存放有更新的UI腳本文件供BREW終端200進(jìn)行下載。
首先,BREW終端200通過移動通信網(wǎng)絡(luò),如CDMA網(wǎng)絡(luò),從應(yīng)用服務(wù)器300上選擇下載BREW應(yīng)用到本地;當(dāng)BREW終端200運(yùn)行所下載的BREW應(yīng)用時,BREW終端200通過INTERNET網(wǎng)絡(luò),使用TCP的方式連接應(yīng)用腳本服務(wù)器100,同時應(yīng)用腳本服務(wù)器100對BREW應(yīng)用的名稱、有效性和安全性進(jìn)行檢查,保證應(yīng)用腳本服務(wù)器與BREW終端之間通訊的安全性,防止其他組織或者個人非法獲取和訪問UI腳本文件的內(nèi)容;在通過安全檢查后,應(yīng)用腳本服務(wù)器100檢查其中是否存在更新的BREW應(yīng)用版本;若有更新的版本,則向BREW終端200發(fā)送版本升級的提示信息;在BREW終端200對該提示信息進(jìn)行確認(rèn)后,應(yīng)用腳本服務(wù)器100根據(jù)該確認(rèn)信息中攜帶的終端平臺號,選擇與該BREW終端200相匹配的更新的UI腳本文件下發(fā)給BREW終端200,BREW終端200接收該更新的UI腳本文件,并把原有的UI腳本文件替換成該更新的UI腳本文件,從而實現(xiàn)了BREW應(yīng)用軟件的升級。
若沒有更新的版本,則BREW終端200中原有的UI腳本文件保持不變,BREW應(yīng)用軟件沒有得到升級。
本發(fā)明的BREW終端程序模塊如圖4所示,除了包括傳統(tǒng)的BREW終端程序模塊,即應(yīng)用執(zhí)行層203、BREWAPI層204、OEM層205和BREW終端硬件層206,還包括UI腳本描述層201和UI腳本解釋層202,而在傳統(tǒng)BREW終端程序模塊中,UI腳本描述層201和UI腳本解釋層202的功能是固化在應(yīng)用執(zhí)行層203中的,因此想對BREW應(yīng)用程序進(jìn)行升級會存在很大的難度,而且必須提供完整的BREW終端升級程序才能實現(xiàn)。本發(fā)明是把UI腳本描述層201和UI腳本解釋層202從應(yīng)用執(zhí)行層203中分離出來,在進(jìn)行BREW應(yīng)用軟件的升級時,只需替換原有的UI腳本描述層201即可實現(xiàn);在UI腳本描述層201與應(yīng)用執(zhí)行層203之間增加了UI腳本解釋層202,減少了UI和邏輯之間的耦合性,更好地實現(xiàn)了UI的動態(tài)加載,換言之,在修改程序時,不需要把每個層都重寫或是修改,僅僅是需要修改UI腳本解釋層202或是修改應(yīng)用執(zhí)行層203,或是修改UI腳本文件(UI腳本描述層201),對某個層的修改不會影響到其他層的正常工作。
UI腳本解釋層202對UI腳本描述層201進(jìn)行解釋,生成對UI的描述,按協(xié)議對UI的配置數(shù)據(jù)結(jié)構(gòu)進(jìn)行填充,最終會生成一個以UI的狀態(tài)為主鍵的表,該表一直在內(nèi)存中有效并且保持到應(yīng)用程序關(guān)閉。主鍵就是用來唯一標(biāo)識一個記錄的關(guān)鍵字。
應(yīng)用執(zhí)行層203針對表中的描述,繪制應(yīng)用UI,當(dāng)事件或是按鍵觸發(fā)時,執(zhí)行模塊就會按照當(dāng)前的狀態(tài)查找表中對當(dāng)前事件或按鍵的描述,執(zhí)行相應(yīng)動作或是跳轉(zhuǎn)到相應(yīng)的UI。
在腳本文件中描述一個軟件的UI和邏輯,由解釋層解釋,再由執(zhí)行層執(zhí)行。這樣,我們改變腳本描述就達(dá)到了改變軟件的UI和邏輯的目的,如一個界面由背景,菜單,按鈕組成,原腳本文件描述了5個菜單,2個按鈕,我們通過修改腳本文件,描述為6個菜單和3個按鈕,就很方便的改變了軟件的界面。
如果我們進(jìn)行軟件升級或是軟件的跨平臺移植,不希望對軟件界面進(jìn)行修改,只需要對應(yīng)用的UI腳本解釋層202進(jìn)行修改,而不必修改UI腳本文件,把同樣的UI腳本文件解釋成不同操作系統(tǒng)自己所能理解代碼,交由應(yīng)用執(zhí)行層203執(zhí)行。
BREW終端的軟件安裝包中包括目標(biāo)執(zhí)行文件*.mod文件,應(yīng)用所需的資源文件*.bar,動態(tài)加載的UI腳本文件*.tsp文件等。
下面對UI腳本描述層201和UI腳本解釋層202進(jìn)行詳細(xì)的介紹1、UI腳本描述層201Tsp文件就是實現(xiàn)了UI腳本描述層201的功能,Tsp文件就是UI腳本文件,該文件具體的描述了UI的元素例如按鈕、菜單、文字提示、圖形、輸入框等控件的屬性和顯示位置等各種屬性,該文件還描述了UI的狀態(tài)切換,即對各種事件或按鍵觸發(fā)進(jìn)行動作或是進(jìn)行響應(yīng)等。程序啟動后就會首先讀取腳本數(shù)據(jù),重構(gòu)程序UI和邏輯等。
以一個簡單的腳本例子可以更好的理解該發(fā)明,如圖5所示,是一個標(biāo)準(zhǔn)的BREW游戲主菜單界面圖,這個界面圖的Tsp文件描述如下<TSP version=″1.0″><name>TestGame</name>
……在這部分主要描述BREW應(yīng)用的版本號,以便以后自動升級的時候比較版本,和BREW應(yīng)用的名稱。
<Status>C_MAINMENU<background>
<image>
<path>Res</path>
<title>R_I_IMAGE<title>
<x>0</x>
<y>0</y>
</image>
……</background><menu>
<text>”開始游戲”</text>
<x>x_Center</x>
<y>y_Center</y>
……</menu><button>
<text>”進(jìn)入”</text>
<x>x_Left_Menu</x>
<y>y_Menu</y>
<text>”退出”</text>
<x>x_Right_Menu</x>
<y>y_Menu</y></button><onEvent>
<avk_softl>
<onstatus>C_STATUS_START</onstatus>
<onstatus>C_STATUS_SET</onstatus>
<onstatus>C_STATUS_HELP</onstatus>
<onstatus>C_STATUS_ABOUT</onstatus>
</avk_softl>
……</onEvent>……</status>
該腳本簡單描述了有4個菜單(開始游戲、游戲設(shè)定、游戲幫助、游戲關(guān)于)和2個按鈕(進(jìn)入、退出)的UI及各種觸發(fā)事件的處理邏輯。
2、UI腳本解釋層202在目標(biāo)執(zhí)行文件*.mod文件中,除了包含應(yīng)用邏輯和計算以外,還包括了自主開發(fā)的UI腳本解釋層202,UI腳本解釋層202對UI腳本描述層201進(jìn)行解釋,供應(yīng)用執(zhí)行層203來執(zhí)行以實現(xiàn)UI的動態(tài)加載。
如對背景進(jìn)行解釋,其過程為1、根據(jù)UI腳本的描述,比如背景是圖片還是文字,如果是圖片還需要路徑信息,是從資源文件*.bar中讀取,還是直接從文件中讀取。在BREW中,有專用的BAR資源文件打包工具打包,會把圖片,音頻和文字等打包到一個文件中,讀取的時候需要按資源ID來讀取,其好處是資源統(tǒng)一管理;但是有的資源可以是動態(tài)加載的,為實現(xiàn)動態(tài)用戶界面,可能需要更新一部分資源文件,但是這時候已經(jīng)不可能重新打包*.bar文件了,通過動態(tài)從應(yīng)用腳本服務(wù)器100下載我們需要的資源圖片文件到本地來讀取,這就是后者所提到的直接從文件讀取。這個文件可以是一個腳本配置文件,可以是一個圖片格式的文件,可以是音樂格式的文件,也可以是其他資源文件等。
2、再根據(jù)UI腳本中對背景的描述位置,來繪制應(yīng)用的背景的位置。
3、然后再在背景上繪制菜單項。菜單項一般包含菜單的背景貼圖信息和菜單文字顯示,文字顏色,繪制位置等信息。
4、接著根據(jù)<BUTTON>描述繪制出按鈕。
5、最后根據(jù)onEvent字段處理頁面的按鍵響應(yīng)邏輯,當(dāng)事件產(chǎn)生時是如何跳轉(zhuǎn)頁面,如何切換狀態(tài)等。
如圖6所示,是UI腳本解釋層202的工作流程圖。UI腳本解釋層202的功能是對UI腳本文件進(jìn)行解釋和分析,并最終生成一個UI描述表。其具體過程如下當(dāng)BREW應(yīng)用啟動時,UI腳本解釋層202把UI腳本文件讀入緩沖區(qū),即執(zhí)行步驟401;對UI腳本文件進(jìn)行詞法分析和語法分析,即執(zhí)行步驟402和403;最終生成一個UI描述表,即步驟404。
詞法分析402是指原文件被分解為詞法符號的過程,詞法分析按照執(zhí)行的先后次序分為六步源字符映射,轉(zhuǎn)義換行替換,空白的劃分,目標(biāo)字符映射以及相鄰字符串連接,從詞法分析中得到一個正確的單詞序列。
語法分析403的主要任務(wù)就是,根據(jù)程序設(shè)計語言的語法規(guī)則,將詞法分析器所提供的單詞符號串分析成各種語法范疇。從單詞到短語,從短語到語句,從語句到程序段或程序,分析和確定給出的單詞符號串是否組成一個正確的程序。
若分析中發(fā)現(xiàn)有錯,則進(jìn)行相應(yīng)的出錯處理。其中,這里的錯誤可以分為兩級錯誤。
第一級嚴(yán)重的系統(tǒng)錯誤,提示用戶后,按任意鍵退出應(yīng)用程序。
第二級低級別的錯誤,提示用戶后,返回到離當(dāng)前界面比較近的或是功能菜單的入口處。
綜上所述,如果能得到正確的腳本信息,就能通過自帶的解釋器來解析UI信息,重構(gòu)應(yīng)用程序的UI和邏輯。
UI腳本解釋層202解釋的過程就是填充UI描述表的過程,把腳本寫到緩沖區(qū),通過字符串查找和內(nèi)存接口把解釋出來的UI描述項填充到相應(yīng)的UI描述表項。
UI描述表項如下所示每一條UI描述記錄都由以下參數(shù)組成char iRunStatus //UI的狀態(tài),也是應(yīng)用執(zhí)行模塊查表的各界面的入口和主鍵值。
char iBackground //UI的背景模式,表示是否更新背景、還是整屏重繪還是局部更新等。
char iImage //UI的貼圖,是否貼圖標(biāo)志。
char iPath//UI貼圖的來源是從資源文件還是直接從文件中讀取圖片。
char*title//如果從資源文件讀取,該字段為資源文件中圖片的索引值;如果為直接文件讀取則為文件URL。
char ix //要貼圖片的左上角的X坐標(biāo)。
char iy //要貼圖片的左上角的Y坐標(biāo)。
char iMenu//是否有菜單項。
char*pText//菜單顯示的名稱。
char ix //菜單文字的顯示位置的X坐標(biāo)。
char iy //菜單文字的顯示位置的Y坐標(biāo)。
char iButton //是否有按鈕標(biāo)志。
char*pText//按鈕的顯示名稱。
char ix //按鈕文字的顯示位置的X坐標(biāo)。
char iy //按鈕文字的顯示位置的Y坐標(biāo)。
char iOnEvent //事件或是按鍵處理。
char iCondition //事件ID或按鍵值。
char iAction //事件或按鍵響應(yīng)描述。
若有完備的上述UI描述表項,用戶界面就可以重構(gòu)。UI描述表由上述的結(jié)構(gòu)體類型的結(jié)構(gòu)體數(shù)組組成。一個簡單的描述表如下1 C_MAINMENU1062 C_APPSTART1563 C_APPHELP 2064 C_APPABOUT256……105C_APPEXIT 626106iBackground 0//UI整屏重繪。
107iImage1//貼圖108iPath RES//圖片在資源文件中的索引109title R_I_BACKGROUND//該字段為資源文件中圖片的索引值;110ix0//要貼圖片的左上角的X坐標(biāo)111iy0//要貼圖片的左上角的Y坐標(biāo)112iMenu 4//4個菜單項113pText“開始游戲”//UNICODE編碼格式,菜單顯示的名稱114ix50//菜單文字的顯示位置的X坐標(biāo)115iy50//菜單文字的顯示位置的Y坐標(biāo)
……124iButton2//2個按鈕125pText “進(jìn)入”//UNICODE編碼,按鈕的顯示名稱126ix 10//按鈕文字的顯示位置的X坐標(biāo)127iy 120//按鈕文字的顯示位置的Y坐標(biāo)128iOnEvent AVK_SOFT1//左軟鍵,事件或是按鍵處理129iCondition C_STATUS_MAINMENU//事件ID或按鍵值130iActionC_STATUS_APPSTART//事件或按鍵響應(yīng)描述……156iBackground//Next Status……其中,“1 C_MAINMENU 106”表示文件的開頭,文件開頭作為描述表的入口,本身也是一個小表,C-MAINMENU等C開頭的大寫字符串為狀態(tài)標(biāo)志,標(biāo)志每一個頁面的狀態(tài)描述。數(shù)字106表示行號,意思是,我們首先找到要找的頁面,比如是MAINMENU,這樣我們就查到了106,緊接著我們轉(zhuǎn)到106來具體獲取該頁面的描述。
動態(tài)用戶界面的實現(xiàn)流程具體如圖7所示,其具體描述如下BREW終端運(yùn)行BREW應(yīng)用程序,即執(zhí)行步驟程序啟動501;接著屏幕上會閃出一個頁面,即執(zhí)行步驟啟動閃屏502;一般該頁面僅僅是顯示該應(yīng)用程序的LOGO和開發(fā)商信息等。UI腳本解釋層202對UI腳本文件進(jìn)行解釋和分析,生成一個以UI狀態(tài)為主鍵的描述表。
應(yīng)用執(zhí)行層203從UI描述表入口獲取UI描述,比如背景,菜單項和按鈕的描述,即執(zhí)行步驟轉(zhuǎn)入UI描述表入口503和取得UI描述504;接著繪制程序UI,進(jìn)入主程序菜單界面,即執(zhí)行步驟根據(jù)UI描述繪制頁面505。
接下來,執(zhí)行步驟判斷是否有事件觸發(fā)206。
若沒有按鍵或是事件被觸發(fā),則屏幕一直顯示主程序菜單界面,處于空閑的狀態(tài),即執(zhí)行步驟空閑507;
若有按鍵或是事件被觸發(fā),應(yīng)用執(zhí)行層203首先根據(jù)當(dāng)前狀態(tài)描述中對事件或按鍵的處理描述,調(diào)用相應(yīng)的功能函數(shù),并進(jìn)行狀態(tài)切換,即應(yīng)用執(zhí)行層203獲取當(dāng)前要跳轉(zhuǎn)到的頁面狀態(tài),也即是獲取iRunStatus參數(shù)后,會根據(jù)該參數(shù)對存放在內(nèi)存中的UI描述表進(jìn)行查表,當(dāng)查找到該參數(shù)對應(yīng)的狀態(tài)描述項后,就把當(dāng)前狀態(tài)修改為參數(shù)所對應(yīng)的狀態(tài),并根據(jù)修改后的此當(dāng)前狀態(tài)的UI描述,重繪整個UI,實現(xiàn)UI狀態(tài)機(jī)的可靠切換,即執(zhí)行步驟508。
在執(zhí)行完步驟508之后,跳轉(zhuǎn)回到步驟503,按流程繼續(xù)循環(huán)上述的過程。
例如當(dāng)BREW應(yīng)用程序啟動,接著會出現(xiàn)閃屏,然后應(yīng)用執(zhí)行層203從UI描述表的表頭查詢到C_STATUS_MAINMENU的數(shù)據(jù)索引為106,就把描述表指針指向106處,此時,應(yīng)用執(zhí)行層203獲取主菜單界面的UI描述,根據(jù)UI描述表中對主菜單的背景屬性、菜單屬性、按鈕屬性對主菜單對UI界面進(jìn)行繪制,即屏幕上顯示主菜單界面。
當(dāng)按鈕事件發(fā)生時,比如AVK_SOFT1被按下,這時,應(yīng)用執(zhí)行層203通過當(dāng)前描述表指針找到主菜單界面下對該事件的處理方法跳轉(zhuǎn)到C_STATUS_APPSTART頁面;測試描述指針又跳轉(zhuǎn)到表頭處,搜索到C_STATUS_ARRSTART的索引值156,則把描述指針指向描述表的索引值為156的地方,獲取該狀態(tài)頁面的UI描述,這樣就實現(xiàn)了UI狀態(tài)機(jī)的切換。
采用本發(fā)明所描述的體系結(jié)構(gòu)和實現(xiàn)方法,不僅能夠很好的實現(xiàn)BREW應(yīng)用程序的動態(tài)用戶界面加載,而且還能夠克服當(dāng)前BREW應(yīng)用軟件開發(fā)中存在的幾個弊端。
權(quán)利要求
1.基于BREW的一種動態(tài)用戶界面的實現(xiàn)方法,包括以下步驟1001、BREW終端(200)通過internet網(wǎng)絡(luò)從應(yīng)用腳本服務(wù)器(100)下載更新的BREW應(yīng)用的UI腳本文件;1002、BREW終端(200)中的UI腳本解釋層(202)對所述UI腳本文件進(jìn)行解釋,對UI的配置數(shù)據(jù)結(jié)構(gòu)進(jìn)行填充,生成一個UI描述表;1003、BREW終端(200)中的應(yīng)用執(zhí)行層從所述UI描述表入口取得UI描述,對UI進(jìn)行繪制,并在BREW終端(200)屏幕上顯示所繪制的主程序菜單界面。
2.根據(jù)權(quán)利要求1所述的基于BREW的一種動態(tài)用戶界面的實現(xiàn)方法,其特征在于,步驟1001中進(jìn)一步包括2001、所述BREW終端(200)通過移動通信網(wǎng)絡(luò),從應(yīng)用服務(wù)器(300)下載BREW應(yīng)用;2002、當(dāng)BREW終端(200)運(yùn)行所述BREW應(yīng)用時,BREW終端(200)采用TCP方式通過internet網(wǎng)絡(luò)與應(yīng)用腳本服務(wù)器(100)進(jìn)行連接,以檢查應(yīng)用腳本服務(wù)器(100)中是否存在該BREW應(yīng)用更新的UI腳本文件;若存在,則BREW終端(200)下載該更新的UI腳本文件替換原有的UI腳本文件;否則,BREW終端(200)中的UI腳本文件保持不變。
3.根據(jù)權(quán)利要求2所述的基于BREW的一種動態(tài)用戶界面的實現(xiàn)方法,其特征在于,步驟2002中進(jìn)一步包括3001、BREW終端(200)與應(yīng)用腳本服務(wù)器(100)進(jìn)行連接時,應(yīng)用腳本服務(wù)器(100)對BREW應(yīng)用的名稱、有效性和安全性進(jìn)行檢查;3002、在通過安全檢查后,再對所述BREW應(yīng)用的版本進(jìn)行檢查,若有更新的版本,則向BREW終端(200)發(fā)送版本升級的提示信息;3003、BREW終端(200)對該提示信息進(jìn)行確認(rèn),并與應(yīng)用腳本服務(wù)器(100)進(jìn)行通訊,從而獲取更新的BREW應(yīng)用的UI腳本文件。
4.根據(jù)權(quán)利要求3所述的基于BREW的一種動態(tài)用戶界面的實現(xiàn)方法,其特征在于,步驟3003中進(jìn)一步包括應(yīng)用腳本服務(wù)器(100)根據(jù)BREW終端(200)的確認(rèn)信息所提供的BREW終端平臺號,選定與該BREW終端(200)相匹配的更新的UI腳本文件下發(fā)給BREW終端(200)。
5.根據(jù)權(quán)利要求1所述的基于BREW的一種動態(tài)用戶界面的實現(xiàn)方法,其特征在于,步驟1002中UI腳本解釋層對所述UI腳本文件進(jìn)行解釋進(jìn)一步包括UI腳本解釋層讀取UI腳本文件到緩沖區(qū),并對UI腳本文件進(jìn)行詞法分析和語法分析。
6.根據(jù)權(quán)利要求1所述的基于BREW的一種動態(tài)用戶界面的實現(xiàn)方法,其特征在于,步驟1003中進(jìn)一步包括當(dāng)有事件觸發(fā)時,應(yīng)用執(zhí)行層通過當(dāng)前UI描述表找到主菜單界面下對該事件的處理方法,并把描述指針指向UI描述表中與該處理方法對應(yīng)的索引值,從而獲取該狀態(tài)事件的UI描述。
7.基于BREW的一種動態(tài)用戶界面的體系結(jié)構(gòu),包括通過移動通信網(wǎng)絡(luò)進(jìn)行通訊的應(yīng)用服務(wù)器(300)和BREW終端(200),所述BREW終端(200)可從應(yīng)用服務(wù)器(300)下載BREW應(yīng)用,所述BREW終端(200)包括應(yīng)用執(zhí)行層(203)、BREWAPI層(204)、OEM層(205)及BREW終端硬件層(206),其特征在于還包括通過internet網(wǎng)絡(luò)與BREW終端(200)進(jìn)行通訊的應(yīng)用腳本服務(wù)器(100),所述應(yīng)用腳本服務(wù)器(100)向BREW終端(200)提供更新的BREW應(yīng)用的UI腳本文件。
8.根據(jù)權(quán)利要求7所述的基于BREW的一種動態(tài)用戶界面的體系結(jié)構(gòu),其特征在于,所述BREW終端(200)還包括UI腳本描述層(201)和UI腳本解釋層(202),所述UI腳本解釋層(202)對UI腳本描述層(201)進(jìn)行解釋,生成UI描述表,供應(yīng)用執(zhí)行層(203)調(diào)用并執(zhí)行。
9.根據(jù)權(quán)利要求8所述的基于BREW的一種動態(tài)用戶界面的體系結(jié)構(gòu),其特征在于所述UI腳本描述層(201)可由所述應(yīng)用腳本服務(wù)器(100)提供更新的BREW應(yīng)用的UI腳本文件來替換。
10.根據(jù)權(quán)利要求7所述的基于BREW的一種動態(tài)用戶界面的體系結(jié)構(gòu),其特征在于所述應(yīng)用腳本服務(wù)器(100)對BREW終端(200)中BREW應(yīng)用的名稱、有效性和安全性進(jìn)行檢查,保證應(yīng)用腳本服務(wù)器(100)與BREW終端(200)之間通訊的安全性。
11.根據(jù)權(quán)利要求7所述的基于BREW的一種動態(tài)用戶界面的體系結(jié)構(gòu),其特征在于所述應(yīng)用腳本服務(wù)器(100)檢測其中是否存在更新的BREW應(yīng)用的UI腳本文件,以確認(rèn)是否能對BREW終端(200)中的BREW應(yīng)用版本進(jìn)行升級。
12.根據(jù)權(quán)利要求7所述的基于BREW的一種動態(tài)用戶界面的體系結(jié)構(gòu),其特征在于所述應(yīng)用腳本服務(wù)器(100)根據(jù)BREW終端平臺號,選定與該BREW終端(200)相匹配的更新的UI腳本文件下發(fā)給該BREW終端(200)。
全文摘要
本發(fā)明公開了基于Brew的一種動態(tài)用戶界面的體系結(jié)構(gòu)和實現(xiàn)方法,涉及計算機(jī)、網(wǎng)絡(luò)通信技術(shù)領(lǐng)域。該方法包括BREW終端通過internet網(wǎng)絡(luò)從應(yīng)用腳本服務(wù)器下載更新的UI腳本文件;BREW終端中的UI腳本解釋層對UI腳本文件進(jìn)行解釋,最終生成一個UI描述表;BREW終端中的應(yīng)用執(zhí)行層從UI描述表入口取得UI描述,對UI進(jìn)行繪制,并在BREW終端屏幕上顯示所繪制的主程序菜單界面。對應(yīng)的體系結(jié)構(gòu)包括通過internet網(wǎng)絡(luò)與BREW終端進(jìn)行通訊的應(yīng)用腳本服務(wù)器,應(yīng)用腳本服務(wù)器向BREW終端提供更新的UI腳本文件。本發(fā)明加快了Brew應(yīng)用軟件的開發(fā)速度;增強(qiáng)了BREW應(yīng)用的擴(kuò)展性和可維護(hù)性。
文檔編號G06F17/30GK1908894SQ20051003639
公開日2007年2月7日 申請日期2005年8月4日 優(yōu)先權(quán)日2005年8月4日
發(fā)明者趙峰, 郭永 申請人:騰訊科技(深圳)有限公司