以文本方式查看主题

-  曙海教育集团论坛  (http://sun4.cn/bbs/index.asp)
--  Brew手机开发  (http://sun4.cn/bbs/list.asp?boardid=49)
----  CDMA增值业务平台BREW的研究与应用  (http://sun4.cn/bbs/dispbbs.asp?boardid=49&id=2131)

--  作者:wangxinxin
--  发布时间:2010-12-6 10:18:37
--  CDMA增值业务平台BREW的研究与应用
BREW概述
, `3 t# h& X; @- ?# ?+ I, L; P  u) c* [
BREW(Binary Runtime Environment for Wireless,无线二进制运行环境),是高通公司推出CDMA网络 "无线互联网发射平台" 上增值业务开发运行的基本平台。它提供一个高效、低成本、可扩展和熟悉的应用程序执行环境(AEE), 着重开发可无缝植入任何实际手持设备的应用程序。与建立在对内存空间、处理器速度和相关硬件有较高要求的操作系统之上的高端产品不同,BREW 在现有的设备类型上运行。传统上,人们热衷于能否利用高速ASIC(特定用途集成电路)技术实现新的应用功能,甚至在低端设备上,要使用更多的功能则需要无缝集成。现在,BREW提供的功能环境就好像PC机上的操作系统一样,可以通过服务提供商下载指定类型的应用程序或游戏来使用。同时,通过BREW接口功能,供应商可以提供成套的完整的资讯、商务、娱乐功能。在将来的版本中,BREW内核类将能提供诸如蓝牙技术、全球定位系统(GPS) 和基于数据业务的电话等服务。 / U8 v. U/ K" o- \\
$ s& p9 [: }5 U$ N/ I& `0 a6 u
BREW提供了一套应用程序接口(API),制造商和开发人员可以随时对运行环境进行扩展,提供应用程序需要的各种附加性能模块,如"无线互联网发射平台"中包含的多媒体、多种连接方式、位置服务、用户界面、网络等功能套件。 " d, L! b7 n; h# Q7 _* g
5 D2 ]6 F: D! ^0 V
开发应用
0 M; I5 o) ]0 @+ \\  S- w# v* S8 I0 r+ C+ ]- n0 f& k\' J- M1 T9 H
BREW 为应用程序开发者提供了一个功能丰富且使用方便的环境,使其能够利用美国高通公司的移动基站调制解调器(MSM) ASIC 的已有及新增的功能开发新的软件,以适应增值业务发展的需要。BREW 的面向对象可充分扩展的应用程序执行环境,允许使用C 或C++ 开发小程序和共享模块。同时,它还支持Java和XML 等语言。 / Q8 F% m( H% {! }  j
& \\# ^& ?) i: k5 Z3 L8 e
BREW 提供了一套完善的对象技术,使开发者可以非常方便开发基于图形的应用服务:
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应用程序服务,支持简单的、基于事件的AEE内核服务支持,对文件、网络服务、内存和屏幕的访问增强型服务,例如增强图像性能(互动的游戏)、声音播放器(优质的音乐)、GPS 和语音服务综合服务,使应用程序开发者可以利用诸如浏览器、Outlook所支持的服务
3 v5 a0 W2 z  d; t7 m9 R8 E0 Q7 F) V7 S& T) ?
从运行环境和效率上看,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 可以在需要时加载或卸载使用的对象或内存BREW应用程序环境支持人们熟悉的与Microsoft Windows、 Macintosh 或UNIX X-Windows 类似的事件驱动结构本地化BREW小程序非常方便所有文本按Unicode 处理,并以所选语言可支持的最有效的方式储存。BREW 还支持OEM的本地文本格式业务模块可以在对象代码级集成,便于设备开发商和第三方生产商为BREW 平台添加应用模块BREW提供了内核类可与设备平台进行对接
* r9 O1 a8 |* f( l4 k0 ^! e
8 n& z1 v$ W* P. P1 }2 Z2 k/ z0 |7 {8 p) D+ T
在应用开发上,BREW为各种手持设备快速、高效、经济地开发和配置新的应用程序提供了方便,BREW SDK开发包提供基于C/C++、Java等编译环境的运行库和面向对象的类结构,包含了各种有效的系统调用、用户接口、多媒体集成和网络套接字等类对象资源,开发者对BREW的开发就好像在Windows平台上编程,有种类繁多、功能强大的库函数调用一样,开发者不必关心低级平台数据结构和设备驱动程序,因为应用程序和设备平台可以完全通过适当定义的类对象进行交互。而且,它还支持在程序中直接使用字符串、图片、声间、对话框等自定义资源,从而达到交互、生动的效果。目前,BREW应用主要集中在移动文本通信(电子邮件、SMS)、信息服务(新闻、天气、影视、搜索等)、定制服务(个性化代理、时尚)、位置服务(M2M、定位导航)、多媒体娱乐(数据流视频、互联网音频)和游戏(离线、在线)等方面。
% w$ A\' `* V1 f. k) [: [: @* L4 u\' g+ p0 ^1 ?
业务模块开发流程
* H3 R- x3 K/ O* x8 _. X
2 ?1 k, u- @1 L% [BREW开发增值业务是以模块为单位,每一模块可能含一个或多个小程序(Applet),模块的调用(以Windows平台为例,以下同)是从module_main入口开始,提供以Windows动态库类型的小程序为运行单位。业务模块的开发可以独立和同时开发,从而最大限度地缩短开发时间,回避复杂的集成问题。 / f\' v  K/ w% Y: N6 Y
, X+ n0 i# W! G8 H- {! W% u
BREW 中的每个类或小程序必须拥有一个唯一的ClassID,在BREW SDK中,提供了ClassID编程器---生成后缀为MIF的文件,它包含支持的类、支持的小程序以及小程序标题。启动时,BREW 会在设备屏幕上列举MIF文件,并保存从MIF 列举收集来的信息,以便在请求类时使用。  
! k. E  m  p5 N% ]! T
. t# F1 V% {0 S! N1 H- M创建实例
, W\' d) d$ D/ R+ h\' V) ^
7 B5 |5 t\' a( F* I8 bBREW 用于支持小程序和模块创建的机制是ISHELL_CreateInstance 方法。该机制是BREW 模型的核心,也是BREW 支持的最强大的API 之一。调用该方法时BREW 将在支持的类列表中搜索指定的32 位已注册的ClassID。该列表包含内核BREW API支持的条目,另外还包含添加到系统的所有类和小程序,系统启动时会通过MIF 列举进行检测。 2 P( U# {2 ]$ G0 w" q# ^

& T0 B* `4 L# ^+ I9 z+ r7 c& ?# R类通过BREW 模块支持的IMODULE_CreateInstance方法来创建。BREW 将根据需要加载模块,加载后BREW 将使用其IModule 实例创建请求的类。一个模块的所有对象在创建时必须增加其IModule 的引用计数,而在释放时减少IModule 的引用计数。模块在该模块IModule 类的引用计数变为零之前,模块会保持加载的状态,一旦引用变为零,BREW 将自动释放与该模块相关的所有内存。这种方法的象Windows编程中使用COM 对象一样;创建实例的过程基本上是统一的,程序员一般必干预此过程,这样有利于开发和运行的效率。 \' ]8 k# V+ R; {4 E
! c: h3 y5 A9 u1 l9 \\2 G
创建和中止小程序
; 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 在两种情况下创建小程序:
2 q  u$ ?% I( b8 P% |
1 B! d  S% T/ K; E9 G
; I% Y# m$ q; e* q! ^1 t应ISHELL_StartApplet 方法的要求创建小程序。该方法可以创建小程序,小程序生成以后,将立即发送EVT_APP_START 事件,通知小程序已处于激活的状态并可以调用其它用户接口类如绘制屏幕、弹出对话框等为处理已注册的通知、警报等创建小程序,小程序生成后会立即收到特定的通知事件   u\' q: i4 O% ~2 U% }0 L

- M" |& ]\' g3 d% e+ X\' s4 d+ x0 g+ N1 ^5 b4 Y
中止小程序通过由BREW系统自动调用Release方法完成,只要在Release方法中加入释放自定义的内存和资源即可。 - }" ^% 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编程中最重要的过程,来自无线网络、BREW系统、OEM驱动程序、用户接口输入的所有事件将通过ISHELL_SendEvent 方法发送给小程序,事件的发送可以同步,也可以异步进行。一般情况,发送给小程序的事件包括键区、对话和控件更改事件。
; Y  f5 m* Q\' X  S2 k- U$ D, c, U) e6 E; c+ |& _. t$ Y% w
通常,小程序仅需处理少数事件,这些事件可以是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
通过对事件的响应,小程序将自动调用对应的方法如绘制屏幕、显示图片、播放MP3、弹出对话框等。通常的处理方法中包含了以下可供调用的类对象:外壳服务、时间/计时器、通知、内存管理、文件管理、数据库管理、网络和套接字、HTTP、下载和结算、显示、图像(显示、转换、动画)、图形、声音播放器(播放MIDI 和MP3 文件)、声音(产生铃声警告声和播放音频文件)、标准帮助功能库和用户控件如对话框、日期控件、菜单控件、文本编辑控件、时间控件、静态文本控件。 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提供了一个电话模拟器,供程序开发人员设计、定制用户界面,配置新设备和测试应用软件,并可以动态监视业务程序的内存使用。它基本上可以模拟真实环境的测试状态和效果。

TOP