BREW概述
, `3 t# h& X; @- ?# ?+ I, L; P u) c* [
BREW(Binary Runtime Environment for Wireless,無線二進制運行環(huán)境),是高通公司推出CDMA網(wǎng)絡(luò) "無線互聯(lián)網(wǎng)發(fā)射平臺" 上增值業(yè)務(wù)開發(fā)運行的基本平臺。它提供一個高效、低成本、可擴展和熟悉的應(yīng)用程序執(zhí)行環(huán)境(AEE), 著重開發(fā)可無縫植入任何實際手持設(shè)備的應(yīng)用程序。與建立在對內(nèi)存空間、處理器速度和相關(guān)硬件有較高要求的操作系統(tǒng)之上的高端產(chǎn)品不同,BREW 在現(xiàn)有的設(shè)備類型上運行。傳統(tǒng)上,人們熱衷于能否利用高速ASIC(特定用途集成電路)技術(shù)實現(xiàn)新的應(yīng)用功能,甚至在低端設(shè)備上,要使用更多的功能則需要無縫集成。現(xiàn)在,BREW提供的功能環(huán)境就好像PC機上的操作系統(tǒng)一樣,可以通過服務(wù)提供商下載指定類型的應(yīng)用程序或游戲來使用。同時,通過BREW接口功能,供應(yīng)商可以提供成套的完整的資訊、商務(wù)、娛樂功能。在將來的版本中,BREW內(nèi)核類將能提供諸如藍牙技術(shù)、全球定位系統(tǒng)(GPS) 和基于數(shù)據(jù)業(yè)務(wù)的電話等服務(wù)。 / U8 v. U/ K" o- \\
$ s& p9 [: }5 U$ N/ I& `0 a6 u
BREW提供了一套應(yīng)用程序接口(API),制造商和開發(fā)人員可以隨時對運行環(huán)境進行擴展,提供應(yīng)用程序需要的各種附加性能模塊,如"無線互聯(lián)網(wǎng)發(fā)射平臺"中包含的多媒體、多種連接方式、位置服務(wù)、用戶界面、網(wǎng)絡(luò)等功能套件。 " d, L! b7 n; h# Q7 _* g
5 D2 ]6 F: D! ^0 V
開發(fā)應(yīng)用
0 M; I5 o) ]0 @+ \\ S- w# v* S8 I0 r+ C+ ]- n0 f& k\' J- M1 T9 H
BREW 為應(yīng)用程序開發(fā)者提供了一個功能豐富且使用方便的環(huán)境,使其能夠利用美國高通公司的移動基站調(diào)制解調(diào)器(MSM) ASIC 的已有及新增的功能開發(fā)新的軟件,以適應(yīng)增值業(yè)務(wù)發(fā)展的需要。BREW 的面向?qū)ο罂沙浞謹(jǐn)U展的應(yīng)用程序執(zhí)行環(huán)境,允許使用C 或C++ 開發(fā)小程序和共享模塊。同時,它還支持Java和XML 等語言。 / Q8 F% m( H% {! } j
& \\# ^& ?) i: k5 Z3 L8 e
BREW 提供了一套完善的對象技術(shù),使開發(fā)者可以非常方便開發(fā)基于圖形的應(yīng)用服務(wù):
4 @) `. K; u, G7 E+ a8 A/ \\1 c+ a6 [8 t# z1 R: B6 V
: K2 L2 X+ E! {/ v7 c1 h- h* S應(yīng)用程序服務(wù),支持簡單的、基于事件的AEE內(nèi)核服務(wù)支持,對文件、網(wǎng)絡(luò)服務(wù)、內(nèi)存和屏幕的訪問增強型服務(wù),例如增強圖像性能(互動的游戲)、聲音播放器(優(yōu)質(zhì)的音樂)、GPS 和語音服務(wù)綜合服務(wù),使應(yīng)用程序開發(fā)者可以利用諸如瀏覽器、Outlook所支持的服務(wù)
3 v5 a0 W2 z d; t7 m9 R8 E0 Q7 F) V7 S& T) ?
從運行環(huán)境和效率上看,BREW提供以下支持: # z9 q5 R" T9 ^6 v) M+ m V" }
* O1 @) r! g" w5 ]1 @3 l
, k2 O7 [7 d1 ?" x% n& _BREW可有效地利用RAM 和持久存儲器。BREW 可以在需要時加載或卸載使用的對象或內(nèi)存BREW應(yīng)用程序環(huán)境支持人們熟悉的與Microsoft Windows、 Macintosh 或UNIX X-Windows 類似的事件驅(qū)動結(jié)構(gòu)本地化BREW小程序非常方便所有文本按Unicode 處理,并以所選語言可支持的最有效的方式儲存。BREW 還支持OEM的本地文本格式業(yè)務(wù)模塊可以在對象代碼級集成,便于設(shè)備開發(fā)商和第三方生產(chǎn)商為BREW 平臺添加應(yīng)用模塊BREW提供了內(nèi)核類可與設(shè)備平臺進行對接
* r9 O1 a8 |* f( l4 k0 ^! e
8 n& z1 v$ W* P. P1 }2 Z2 k/ z0 |7 {8 p) D+ T
在應(yīng)用開發(fā)上,BREW為各種手持設(shè)備快速、高效、經(jīng)濟地開發(fā)和配置新的應(yīng)用程序提供了方便,BREW SDK開發(fā)包提供基于C/C++、Java等編譯環(huán)境的運行庫和面向?qū)ο蟮念惤Y(jié)構(gòu),包含了各種有效的系統(tǒng)調(diào)用、用戶接口、多媒體集成和網(wǎng)絡(luò)套接字等類對象資源,開發(fā)者對BREW的開發(fā)就好像在Windows平臺上編程,有種類繁多、功能強大的庫函數(shù)調(diào)用一樣,開發(fā)者不必關(guān)心低級平臺數(shù)據(jù)結(jié)構(gòu)和設(shè)備驅(qū)動程序,因為應(yīng)用程序和設(shè)備平臺可以完全通過適當(dāng)定義的類對象進行交互。而且,它還支持在程序中直接使用字符串、圖片、聲間、對話框等自定義資源,從而達到交互、生動的效果。目前,BREW應(yīng)用主要集中在移動文本通信(電子郵件、SMS)、信息服務(wù)(新聞、天氣、影視、搜索等)、定制服務(wù)(個性化代理、時尚)、位置服務(wù)(M2M、定位導(dǎo)航)、多媒體娛樂(數(shù)據(jù)流視頻、互聯(lián)網(wǎng)音頻)和游戲(離線、在線)等方面。
% w$ A\' `* V1 f. k) [: [: @* L4 u\' g+ p0 ^1 ?
業(yè)務(wù)模塊開發(fā)流程
* H3 R- x3 K/ O* x8 _. X
2 ?1 k, u- @1 L% [BREW開發(fā)增值業(yè)務(wù)是以模塊為單位,每一模塊可能含一個或多個小程序(Applet),模塊的調(diào)用(以Windows平臺為例,以下同)是從module_main入口開始,提供以Windows動態(tài)庫類型的小程序為運行單位。業(yè)務(wù)模塊的開發(fā)可以獨立和同時開發(fā),從而最大限度地縮短開發(fā)時間,回避復(fù)雜的集成問題。 / f\' v K/ w% Y: N6 Y
, X+ n0 i# W! G8 H- {! W% u
BREW 中的每個類或小程序必須擁有一個唯一的ClassID,在BREW SDK中,提供了ClassID編程器---生成后綴為MIF的文件,它包含支持的類、支持的小程序以及小程序標(biāo)題。啟動時,BREW 會在設(shè)備屏幕上列舉MIF文件,并保存從MIF 列舉收集來的信息,以便在請求類時使用。
! k. E m p5 N% ]! T
. t# F1 V% {0 S! N1 H- M創(chuàng)建實例
, W\' d) d$ D/ R+ h\' V) ^
7 B5 |5 t\' a( F* I8 bBREW 用于支持小程序和模塊創(chuàng)建的機制是ISHELL_CreateInstance 方法。該機制是BREW 模型的核心,也是BREW 支持的最強大的API 之一。調(diào)用該方法時BREW 將在支持的類列表中搜索指定的32 位已注冊的ClassID。該列表包含內(nèi)核BREW API支持的條目,另外還包含添加到系統(tǒng)的所有類和小程序,系統(tǒng)啟動時會通過MIF 列舉進行檢測。 2 P( U# {2 ]$ G0 w" q# ^
& T0 B* `4 L# ^+ I9 z+ r7 c& ?# R類通過BREW 模塊支持的IMODULE_CreateInstance方法來創(chuàng)建。BREW 將根據(jù)需要加載模塊,加載后BREW 將使用其IModule 實例創(chuàng)建請求的類。一個模塊的所有對象在創(chuàng)建時必須增加其IModule 的引用計數(shù),而在釋放時減少IModule 的引用計數(shù)。模塊在該模塊IModule 類的引用計數(shù)變?yōu)榱阒埃K會保持加載的狀態(tài),一旦引用變?yōu)榱?BREW 將自動釋放與該模塊相關(guān)的所有內(nèi)存。這種方法的象Windows編程中使用COM 對象一樣;創(chuàng)建實例的過程基本上是統(tǒng)一的,程序員一般必干預(yù)此過程,這樣有利于開發(fā)和運行的效率。 \' ]8 k# V+ R; {4 E
! c: h3 y5 A9 u1 l9 \\2 G
創(chuàng)建和中止小程序
; z8 y" \\6 j3 J9 C( b, Z1 d6 e7 j8 [6 @) {
在BREW 模型下,小程序是支持IApplet 接口方法的類。這樣BREW 便可以使用相同的簡單接口管理所有的小程序。
; N! |4 o* O7 g8 A) D
/ E& \\" [% _5 Z8 G2 I, v0 NBREW 在兩種情況下創(chuàng)建小程序:
2 q u$ ?% I( b8 P% |
1 B! d S% T/ K; E9 G
; I% Y# m$ q; e* q! ^1 t應(yīng)ISHELL_StartApplet 方法的要求創(chuàng)建小程序。該方法可以創(chuàng)建小程序,小程序生成以后,將立即發(fā)送EVT_APP_START 事件,通知小程序已處于激活的狀態(tài)并可以調(diào)用其它用戶接口類如繪制屏幕、彈出對話框等為處理已注冊的通知、警報等創(chuàng)建小程序,小程序生成后會立即收到特定的通知事件 u\' q: i4 O% ~2 U% }0 L
- M" |& ]\' g3 d% e+ X\' s4 d+ x0 g+ N1 ^5 b4 Y
中止小程序通過由BREW系統(tǒng)自動調(diào)用Release方法完成,只要在Release方法中加入釋放自定義的內(nèi)存和資源即可。 - }" ^% F1 Q3 n5 V: m
, j. _7 P9 J0 z) C處理小程序事件 & {9 {& l. i: J; g/ |\' z2 N
* J% Q4 j3 N6 Y, P7 I! t L
事件處理是BREW編程中最重要的過程,來自無線網(wǎng)絡(luò)、BREW系統(tǒng)、OEM驅(qū)動程序、用戶接口輸入的所有事件將通過ISHELL_SendEvent 方法發(fā)送給小程序,事件的發(fā)送可以同步,也可以異步進行。一般情況,發(fā)送給小程序的事件包括鍵區(qū)、對話和控件更改事件。
; Y f5 m* Q\' X S2 k- U$ D, c, U) e6 E; c+ |& _. t$ Y% w
通常,小程序僅需處理少數(shù)事件,這些事件可以是EVT_APP_START、EVT_APP_STOP、EVT_KEY和EVT_COMMAND。如果小程序不處理事件,其HandleEvent方法必須返回FALSE。這樣可以使BREW對該事件進行任何必要的特殊處理。
! i8 i1 I; q1 u: m% f, c; T\' J; i4 u, v$ Z* _ [4 M# }! x
通過對事件的響應(yīng),小程序?qū)⒆詣诱{(diào)用對應(yīng)的方法如繪制屏幕、顯示圖片、播放MP3、彈出對話框等。通常的處理方法中包含了以下可供調(diào)用的類對象:外殼服務(wù)、時間/計時器、通知、內(nèi)存管理、文件管理、數(shù)據(jù)庫管理、網(wǎng)絡(luò)和套接字、HTTP、下載和結(jié)算、顯示、圖像(顯示、轉(zhuǎn)換、動畫)、圖形、聲音播放器(播放MIDI 和MP3 文件)、聲音(產(chǎn)生鈴聲警告聲和播放音頻文件)、標(biāo)準(zhǔn)幫助功能庫和用戶控件如對話框、日期控件、菜單控件、文本編輯控件、時間控件、靜態(tài)文本控件。 0 d$ Z: s* e/ v: w6 b5 Q& h8 J
/ c; @) B% s" F: h
測試
- q1 S1 H$ @# g+ F& x
; y, {* E4 w5 {& y2 C\' z. gBREW SDK提供了一個電話模擬器,供程序開發(fā)人員設(shè)計、定制用戶界面,配置新設(shè)備和測試應(yīng)用軟件,并可以動態(tài)監(jiān)視業(yè)務(wù)程序的內(nèi)存使用。它基本上可以模擬真實環(huán)境的測試狀態(tài)和效果。