实验 4.1练习 1:在 Brew MP Simulator 6 中运行样例应用程序在 Brew MP Simulator 6 中运行样例程序应用程序:1.从“开始”菜单中,启动适用于 Qualcomm Brew MP SDK 的Brew MP SDK Manager。
2.在 SDK Manager 中,要显示制作工具和运行时工具,请单击“工具”选项卡。
3.启动 Target Manager。
4.单击“翻盖手机”设备配置文件,然后单击“创建目标”。
5.当提示您输入“目标名称”时,保留默认名称,然后单击“继续”。
6.在“Simulator 目标”窗口中,双击“翻盖手机”。
7.在模拟设备上,启动AppManager。
8.选择 C Localized App 应用程序。
使用鼠标模拟设备上的按键功能。
9.要退出应用程序,请按“电源(结束)”。
10.在 AppManager 中,尝试其他应用程序。
11.完成后,关闭 Simulator 和Target Manager。
练习 2:从 Visual Studio 安装样例源代码并运行 Simulator将样例应用程序源代码安装到便携式计算机上:1.从“开始”菜单中,启动 BrewMP SDK Manager。
2.要显示工具组和平台,请单击“设置”。
3.在“工具组” “可选组件”中,单击“安装”安装样例程序。
4.按照向导窗口中的提示进行操作。
请注意安装文件的位置。
使用安装的源代码打开项目:1.在 Visual Studio 中,单击“文件”→“打开”→“项目/解决方案”。
2.导航到已安装的源代码,选择c_basicapp_VS<version>.vcproj ,然后单击“打开”。
3.在 Visual Studio SolutionExplorer 窗格中,导航到“源文件”目录,然后双击c_basicapp.c 加载文件。
4.在 Visual Studio 中,使用Brew MP 插件工具栏执行以下操作:A.选择“模拟目标”作为目标类型B.选择 Brew MP 目标C.单击“运行”→Brew MP 将启动 Simulator 并运行应用程序。
→如果已经打开 Simulator,它可能在另一个窗口后面运行。
完成本实验后,您将:▪在 Target Manager 中创建了设备配置文件,其特定于所需的 Brew MP SDK 版本▪根据新创建的 Brew MP 目标配置文件运行了样例应用程序▪将源代码从样例应用程序安装到便携式计算机中▪在 Visual Studio 中打开了一个源代码项目▪从 Visual Studio 窗口在Simulator 上生成并运行了应用程序实验 4.2练习 1-运行 Brew MP 应用程序向导生成 Brew MP 应用程序:1.启动 Visual Studio2.选择“文件”→“新建”→“项目”。
3.在“项目类型”中,选择“Brew MP”。
4.在“Visual Studio 已安装的模板”下,选择“C 应用程序”。
5.在“名称:”字段中,输入“myapp ” 。
6.单击“浏览”,导航至C:\Documents andSettings\<username>\MyDocuments\Visual Studio<version>\Projects。
7.单击“确定”。
练习 2-查看源文件熟悉 Brew MP 应用程序编程基础知识:1.在 Visual Studio 的Solution Explorer 中,展开“头文件”文件夹。
打开 myapp.bid文件。
此文件在 AEECLSID_MYAPP 常量中定义了应用程序的名称,并为其分配了十六进制值类 ID。
2.打开 myapp_res.h 文件。
此文件定义了 MYAPP_RES_.H 头文件常量、MYAPP_RES_FILE(作为myapp.bar)、此应用程序使用的对应资源文件以及IDS_STRING_1001(作为对 ID 值为 1001 的文件中字符串资源的引用)。
3.展开“资源文件”文件夹。
打开 myapp.car 文件。
此文件包含资源文件中所含资源的名称、ID、类型和数据。
4.打开 myapp.cif。
此文件标识各种重要模块资源,包括包含应用程序 AEECLSID 的myapp.bid 文件。
也可用它标识应用程序和应用程序使用的任何MIME 类型处理程序所使用的应用程序扩展。
5.打开 myapp_ico.png。
此文件是为该应用程序创建的默认图标,将显示在 Simulator 和设备的 App Manager 中。
6.展开“源文件”文件夹。
请注意存在以下两个文件:AEEMODGEN-包含模块接口定义AEEAPPGEN-包含Applet接口定义这两个源文件提供了所有模块和Applet接口及类的定义,所有MOD Applet项目必须具有这两个源文件。
7.打开 myapp.c。
8.找到“Include 和变量定义”部分。
本部分包括各种类和接口的所有头文件。
9.找到 myapp 结构。
此数据结构是必需的,它定义了用于保存所有大型变量、全局变量和接口声明的数据结构。
10.找到 AEEClsCreateInstance() 函数。
此函数可基于应用程序的AEECLSID 创建应用程序。
11.找到 FreeAppData() 函数。
此函数被用作析构函数,可在应用程序关闭时释放所创建的资源和接口。
12.找到 myapp_HandleEvent() 函数。
Brew MP 使用事件驱动型模型,此函数可提供与应用程序交互的主要方式。
13.找到 myapp_DrawScreen() 函数。
此函数由myapp_HandleEvent() 函数调用,用作 EVT_APP_START 事件的返回函数,它会调用 IDisplay 接口以绘制到屏幕。
此函数也使用ISHELL_LoadResString 从myapp.bar 资源文件加载文本字符串。
注意:这些接口和函数将在下面几节讨论。
有关详细信息,请参见 SDK Manager“资源”页面上的API Reference(《API 参考》)。
练习 3-使用资源文件1.在 Visual Studio 中,打开myapp 项目(如果尚未打开)。
2.从 Brew MP 工具栏中,选择“启动 Brew MP 工具”,然后选择“Resource Manager”。
3.在 Resource Manager 中,选择“文件”→“打开”,导航到练习 1 中创建的 myapp 项目文件夹。
找到 myapp.car 文件,然后单击“打开”。
4.在“编辑数据”字段中,将“Hello World”更改为“Hello<name>”,其中“<name>”是您的名字。
完成本实验后,您将:▪使用应用程序向导创建新的 Brew MP MOD 应用程序▪浏览新创建应用程序的源文件▪使用 Resource Manager 编辑应用程序 CAR 文件▪重新编译应用程序并在 Simulator 中运行以查看带有您名字的字符串Hello实验 4.3练习 1-向 myapp 应用程序添加ISettings 接口此项目使用 ISettings 接口读取设备的语言设置并在 Simulator 的输出窗口中返回该设置。
1.打开 SDK Manager。
2.使用API Reference guide (《API 参考指南》)(可从 SDK manager 的“资源”选项卡中找到)查找要包括在项目中的头文件。
3.启动 Visual Studio,然后打开 myapp 项目(如果尚未打开)。
4.导航至 myapp.c 的“Include 和变量定义”部分。
5.编写语句,以包括在步骤 2 中找到的 ISettings 头文件。
6.读取和更改设置时,ISettings 接口使用注册表对象提供通知。
要确保提供此功能,请将以下语句添加到“Include 和变量定义”部分:#include "AEESettingsReg.bid"7.将 ISettings 对象的指针添加到Applet结构中的接口。
使用IDisplay 指针作为线索,以确保语确。
8.导航到 FreeAppData 函数,添加所需代码以释放接口。
9.生成项目并检查错误。
注意:直到完成下一练习后,本实验中的代码更改才会显示在 Simulator 中。
练习 2-使用 ISettings 检索语言设置1.本练习使用 DBGPRINTF 助手函数和部分 AEEStdLib 库。
请将头文件添加到 myapp.c 源文件的“Include 和变量声明”部分。
2.在 myapp.c 源文件中,导航到myapp_HandleEvent 函数。
此项目使用 EVT_KEY switch 来响应在设备上按下“选择”键的操作。
此键的 wParam 是AVK_SELECT。
有关事件处理的更多信息,请参见《API 参考指南》。
有关事件代码的完整列表,请参见 AEEVCodes.h 头文件。
3.添加代码以在 InitAppData 中创建 ISettings 接口的实例。
确保实例已创建。
if (AEE_SUCCESS !=ISHELL_CreateInstance(pMe->piShell,AEECLSID_SettingsReg, (void **)&pMe->piSettings)){DBGPRINTF("Failed to create ISettings object");pMe->piSettings = NULL;return FALSE; // Failureoccurred}4.在 EVT_KEY 下输入一个switch 以将 AVK_SELECT 作为wParam 进行处理。
switch(wParam) {case AVK_SELECT: {// Add code here... }return TRUE;default:return FALSE;}5.在大括号之间,添加一个 int变量来保存接口创建结果。
int nRes;6.创建一个缓冲区来保存ISettings 查询结果。
如果函数失败,缓冲区将保存错误消息。
char szCurrCode[20];7.将活动设备的语言设置加载到缓冲区。
验证是否已检索到语言。
如果未检索到语言,则在 nRes 变量中提供反馈。
nRes = ISettings_Get(pMe->piSettings,"/BREW/UI/Language", // Key to get setting-value(char*)&szCurrCode,sizeof(szCurrCode), // Buffer size for setting value NULL);if (AEE_SUCCESS != nRes) {return TRUE; // Event handled regardless of error }DBGPRINTF("Current language is:%s", szCurrCode);8.要生成应用程序并在Simulator 中运行,请单击“运行”。