Hello Brew!

Hello Brew!

看了很多天BREW的教程,今天发一个BREW中最简单的实例Hello Brew。要想成功编译和运行这个例子,需要如下软件。

  1. Visual C++ 6.0
  2. BREW SDK
  3. BREW SDK TOOLS

BREW SDK TOOLS提供了一个VC环境下的插件,可以生成BREW相应的骨架代码。安装顺序先安装VC6,然后是SDK,最后是SDK TOOLS。

完毕后进入VC,新建一个工程,工程类型选择BREW Application Wizard,然后在Project name中填写HelloBrew,单击OK。

image

接下来我们需要选择BREW程序需要用到的功能,这些功能包括File,Network,Database, TAPI/SMS,Sound,选择这些相应的功能后,BREW Application Wizard会在生成的代码中增加相对应的头文件。

image

接下来一步是创建mif文件,每一个Brew应用程序都需要一个mif文件,这个文件是BREW应用程序的入口,在mif文件中包括应用程序的表述信息如ClassID,图标,权限,作者等等。我们可以在下一个窗口中启动mif Editor。

image

在Mif Editor中点击新建小程序按钮,创建HelloBrew需要的应用程序。

image

单击新建小程序按钮后,我们需要创建ClassID。每一个BREW应用程序都会有一个唯一ClassID, ClassID是由高通公司统一负责分配的,我们需要向高通公司申请,申请之前我们需要成为高通认证BREW开发者,这个资格在国内可以向联通博路提交申请,既可以免费获得。若是还没有成为认证的BREW开发者,我们可以在选择本地手工输入一个ClassID,但是程序正式提交之前必须使用高通公司分配的ClassID,否则你的应用程序无法提交测试。

image

我这里使用从BREW Web站点获取ClassID的方式,在名称中填写HelloBrew,选择从Brew web站点,点击生成后,系统会自动启动浏览器,并打开ClassID Generator的页面,输入BREW开发者用户名密码后,进入如下页面:

image

输入ClassName,点击Submit,会提示下载一个名为HELLOBREW.BID的文件,我们将该文件保存在刚刚创建的VC工程目录中备用。然后回到Mif Editor窗口,单击搜索BID文件按钮,在弹出窗口中选择刚刚下载的BID文件。然后,在名称中输入HelloBrew,然后保存,文件名为HelloBrew,这里要注意文件名字要和工程名一致,这样在模拟器中才可以正常运行。退出Mif Editor,回到BREW Application Wizard,然后单击Finish。这时Wizard会自动创建骨架代码。

我打开HelloBrew.c文件,添加如下代码:

#include “HELLOBREW.bid”

typedef struct hellobrew_s
{
    AEEApplet a;
} hellobrew_t;

这个文件中定义了ClassID。然后再找到

int AEEClsCreateInstance(AEECLSID ClsId,IShell * pIShell,IModule * po,void ** ppObj)
{
   *ppObj = NULL;
   if(ClsId == AEECLSID_HELLOBREW){
      if(AEEApplet_New(sizeof(AEEApplet), ClsId, pIShell,po,(IApplet**)ppObj,
         (AEEHANDLER)HelloBrew_HandleEvent,NULL)
         == TRUE)
      {
         // Add your code here .....

         return (AEE_SUCCESS);
      }
   }
    return (EFAILED);
}

将其修改为

int AEEClsCreateInstance(AEECLSID ClsId,IShell * pIShell,IModule * po,void ** ppObj)
{
   *ppObj = NULL;
   if(ClsId == AEECLSID_HELLOBREW){
      if(AEEApplet_New(sizeof(hellobrew_t), ClsId, pIShell,po,(IApplet**)ppObj,
         (AEEHANDLER)HelloBrew_HandleEvent,NULL)
         == TRUE)
      {
         // Add your code here .....

         return (AEE_SUCCESS);
      }
   }
    return (EFAILED);
}

在HelloWorld_HandleEvent添加如下黑体字代码,

static boolean HelloWorld_HandleEvent(IApplet * pi, AEEEvent eCode, uint16 wParam, uint32 dwParam)

   hellobrew_t *pApp = (hellobrew_t *)pi;
    AEEApplet *pMe = &pApp->a;
    AECHAR szBuf[] = {'h','e','l','l','o',' ','b', 'r','e', 'w', '\0'};
    switch (eCode)
    {
      case EVT_APP_START:                       
            IDISPLAY_ClearScreen(pMe->m_pIDisplay);
            IDISPLAY_DrawText(pMe->m_pIDisplay, AEE_FONT_BOLD, szBuf, -1, 0,0,0,IDF_ALIGN_CENTER | IDF_ALIGN_MIDDLE);
            IDISPLAY_Update(pMe->m_pIDisplay);

              return(TRUE);
      case EVT_APP_STOP:

         return TRUE;
      default:
         break;
   }
   return FALSE;
}

这样HelloBrew的程序就已经修改完成编译无错后,需要在模拟器中运行该程序。编译后会生成hellobrew.dll,这个就是我们的程序,接下来我们需要在将hellobrew.dll复制到一个名为HelloBrew的目录中,并将刚才生成的mif文件复制到和HelloBrew目录同级的目录中,文件结构如下:

│  HelloBrew.mif

└─HelloBrew
        HelloBrew.dll

启动Brew模拟器,在工具菜单中选择设置,然后选择mif所在的目录,单击确定,选择HelloBrew启动应用程序,如下图:

image

至此我们第一个Brew应用程序创建完成。

你好

你好, 看了你的文章, 对你blog中一些文章非常感兴趣,想请教一些问题,能否交换一下联系方式?谢谢。我的email:skoy.ms@gmail.com,QQ:274492320,msn: shengkellb@163.com 等待你的回复,谢谢!