Chinaunix首页 | 论坛 | 博客
  • 博客访问: 939683
  • 博文数量: 146
  • 博客积分: 3321
  • 博客等级: 中校
  • 技术积分: 1523
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-29 10:32
文章分类

全部博文(146)

文章存档

2014年(2)

2013年(5)

2012年(4)

2011年(6)

2010年(30)

2009年(75)

2008年(24)

分类: C/C++

2010-06-17 21:27:14

安装BREW SDK完成后,就可以开发BREW应用了。

开始创建工程:

  在Visual C++ 6.0中,点击“File->New…”,打开新建对话框,选中“Project”选项卡,如图一所示。

(图一)

  如果使用Visual Studio .NET,则点击“File->New Solution…”,如图二所示。

(图二)

  选择“BREW Application Wizard”,在Location一栏中输入建立工程的目录(这里设置为C:\BREW\,其后的helloworld是根据Project name中的输入自动添加的),在Project name一栏输入工程名(这里为helloworld),由于手机只支持小写的文件名,使用大写或大小写混合的文件名可能无法运行或出错,因此工程名建议只使用小写的文件名。输入工程名后,点击“OK”进入图三。

(图三)

  点击“Next”进入下一个对话框。如果已经熟悉BREW应用开发过程,可以直接点击“Finish”开始编码。

(图四)

  点击中间的“MIF Editor”,启动BREW MIF编辑器,如图五所示。

(图五)

  点击“Applets”选项卡中的,设置应用的ClassID。

(图六)

  ClassID可以从高通网站获得,也可以本地生成,或者从已有的BID文件中获得。在开发阶段用本地生成方式就可以了,输入指定的八位十六进制的 ClassID和Class Name。不同的应用要使用不同的ClassID,这里输入01009FF0,Class Name则为helloworld。然后点击“OK”,按提示把文件保存为C:\BREW\helloworld\helloworld.bid。

(图七)

  “Applet Information”需要填写的内容:

     Name:输入要显示的应用名称,如“Hello World”、“我的第一个应用”等等。

     Applet Type:设置应用的类型,本样例应用可以选择Game或Tools。

     Graphics:设置三种规格的图标,Small为16X16,Medium为26X26,Large为65X42。如不设置,BREW将采用默认的图标。


  点击“Privileges”选项卡,设置应用程序的权限。

(图八)

    File:如果需要对文件进行读写操作,则设置此项。

    Network:如果有网络操作,则设置此项。

    其余类推。由于本样例应用没有相关操作,故无需设置任何权限。


  点击“General”选项卡,输入作者、版权信息、应用版本号。

  点击“保存”,把文件保存为C:\BREW\helloworld\helloworld.mfx。

  点击“Build->Compile”,编译结果文件为C:\BREW\helloworld\helloworld.mif。

(图九)

  工程到此创建完毕,下一步开始编程。

  注:在C:\BREW\helloword目录下应具有如下文件:

    helloworld.bid

    helloworld.c

    helloworld.mfx

    helloworld.mif

  其中,为了使应用能运行,helloworld.mif必须复制到C:\BREW目录下。


开始编写程序:

通过“BREW Application Wizard”创建的工程,实际生成的源代码文件只有一个:helloworld.c。AEEAppGen.c和AEEModGen.c是BREW SDK自带的文件。

(图十一)

  源代码文件helloworld.c包括应用的数据结构,创建函数、初始化函数、销毁函数和事件响应函数。通常我们需要修改应用的数据结构、初始化函数、销毁函数和事件响应函数。

  应用的数据结构如图十二:

(图十二)

  在数据结构中,第一个成员必须是AEEApplet a,不可以用其他成员代替该成员。应用的其他成员应在AEEApplet a之后,除此之外,无其他限制。helloworld暂时不需要其他成员数据。

  创建函数:

(图十三)

  应用的入口函数,由BREW系统调用,相当于普通C程序的main()函数,通常不需要改动此函数。此函数会对应用进行必要的创建和初始化工作。

  初始化函数:

(图十四)

  通常由创建函数调用,完成应用的初始化工作。

销毁函数:

(图十五)

  应用退出时,由BREW系统调用,把应用在初始化和运行中所使用的内存和其他资源进行释放处理。

  事件响应处理函数:

(图十六)

  在事件处理函数中, 一般处理的事件有:

    EVT_APP_START ---------- 应用开始启动时发送这个事件

    EVT_APP_STOP ------- -----应用结束时发送这个事件

    EVT_APP_SUSPEND ------应用需要挂起时,比如来电,发送该事件

    EVT_APP_RESUME--------挂起结束,比如用户结束通话,发送该事件

    EVT_KEY---------------------接收必要的用户按键事件.

  用户也可以扩展自己的事件, 比如:

    #define EVT_TIMER (EVT_USER+1)

     EVT_USER 是为用户扩展事件而定义的, 跟Windows 编程中的WM_USER 性质一样。

      使用方法:

        ISHELL_PostEvent(pIShell,AEECLSID_HELLO, EVT_TIMER, 0,0);

        ISHELL_SendEvent(pIShell,AEECLSID_HELLO, EVT_TIMER, 0,0);

     不同之处在于 PostEvent 只是将事件放入事件队列,等待合适的时机去执行,而SendEvent则马上处理,只有该事件处理完毕该接口调用才算结束。 与Windows编程中的SendMessage和PostMessage用法相似。

  如果应用已经处理了事件,应该返回TRUE,否则返回FALSE

 

  一个应用创建后,通常收到的第一个事件是EVT_APP_START,应用从这里开始运行。我们第一个应用helloworld就在这里响应事件,在屏幕上显示“Hello World!”。

(图十七)

  红色为添加的代码。编译并在模拟器运行,效果如下:

(图十八)

在模拟器中运行你的程序:

helloworld要在模拟器下能运行,首先要把程序编译成helloworld.dll。如果是用“BREW Application Wizard”创建的应用,则helloworld.dll在C:\BREW\helloworld目录下,此为正确的位置。如果不是用“BREW Application Wizard”创建的,可能不在正确的目录下,则需要调整编译的输出目录。设置方法为点击“Project->Properties”,设置“Output Directory”为空即可。

  生成helloworld.dll文件后,点击“BREW Simulator”运行模拟器。

(图十九)

(图二十)

  点击“File->Load Device”选择所需的终端模拟器。

  点击“File->Change Applet Dir”改变应用的所在目录,在这里改为C:\BRREW。

  在模拟器上选择对应的应用,按“OK”键运行。屏幕上应显示“Hello World!”字样。

  如果应用在运行中出错,可以在开发环境Visual C++或Visusal Studio .Net中执行“调试”功能对应用进行调试。如果是第一次调试,会有如下提示,输入完整的模拟器路径名和文件名,点击“OK”后,可按普通的Windows应用调试方式来进行调试。

(图二十一)

 

-----------------------------------我的黄金分割线-------------------------------

我的问题:

1.在图四的过程中直接点击MIF EDITOR发现无法启动mif editor,这时你可以选择 开始->所有程序->brew sdk tools ->mif editor启动mif editor was disabled to save space.Would you like to restore it now?

2.启动brew模拟器出现 the app disabled to save space。

这个是因为你的文件目录没有设置好。

在A文件夹下放test.mif和test文件夹,test文件夹下放test.dll,
也就是
..\A
..\A\test.mif
..\A\test
..\A\test\test.dll
然后把Applet Directory设置为..\A
默认情况下dll是在debug文件夹下的,可以通过更改工程的属性把它改到..\A\test\test.dll

阅读(1680) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~