最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

MTK添加新的APP的总流程

IT圈 admin 48浏览 0评论

2024年9月8日发(作者:纳南烟)

MTK添加新的APP的总流程

一、 添加程序文件

在plutommimmi下建立 MyAppInc(放头文件.h)MyAppRes(资源文件)MyAppSrc

(源文件.c)。

1.在Inc下添加

MyAppGprot.h 对外接口,外部调用函数原型声明于此。

MyAppProt.h 内部接口,内部调用函数原型声明于此。

MyAppDefs.h 定义资源ID。

MyAppTypes.h 定义常量,自定义数据等。

2.在Src下添加

二、

MyAppSrc.c 实现功能的函数。

三、

makeplutommimmi_appmmi_ 加一行

在VC6.0下的FileView下的mmi_app files下add file to project

将文件加入整个项目

/I"....plutommimmiMyAppMyAppInc"

makeplutommimmi_appmmi_ 加一行

/I "....plutommimmiMyAppMyAppSrcMyAppSrc.c

makeplutommimmi_appmmi_ 加一行

/I"....plutommimmiMyAppMyAppSrc

四、

程序开关部分

1、在plutommimmiIncMMI_features_switch.h末尾添加

#define CFG_MMI_MYAPP (__ON__)

2、在plutommiCustomerCustResourcePLUTO_MMI

MMI_features_switchPLUTO.h末尾添加 #defineCFG_MMI_MYAPP (__ON__)

3、在

plutommiCustomerCustResourceTELSDA25_08A_GEMINI_MMIMMI_features_switch

TELSDA25_08A_GEMINI.h末尾添加

#define CFG_MMI_MYAPP (__ON__)

其中,TELSDA25_08A_GEMINI_MMI为MTK源码的工程名

4、在MTKplutommimmiIncMMI_features.h末尾添加

#ifdefined(CFG_MMI_MYAPP) &&((CFG_MMI_MYAPP==__ON__)||(CFG_MMI_MYAPP==

__AUTO__))

#ifndef __MMI_MYAPP__

#define __MMI_MYAPP__

#endif

#endif

五、 模拟器编译环境下添加头文件

F:sssMTKW180A_S_DriveOnlyMoDISmmi_appmmi_下添加一行

/I "....plutommimmiMyAppMyAppInc"

可以 make xxxx gprs new了,如果编译成功,模拟器编不过出现错误1083,就查查看看

在MoDIS会不会有重复的MyAppSrc.c文件,或者模拟器下编译环境有没有添加头文件。

六、添加一项资源通常分三步:原料,ID,装载。

原料:即原材料,如图像就是准备一副新图,字串就是准备各种语言的Unicode 编码。

ID: 即资源项的别名,程序只能通过ID 来获取资源项 (ID 一般定义在XXDefs.h 中)。

装载:装载在编译目标烧录文件之前就会被执行,其目的有两个:一是将原材料转换成

二进制数据,二是生成将ID 与二进制数据联系起来的映射表。

资源装载预编译程序是plutommiCustomerResGeneratormtk_,这个程序

在每次编译目标烧录文件之前临时编译生成的。下面的修改基本上与这个程序有关。

添加文件

在plutommiCustomerCustResourcePLUTO_MMIRes_MMI

下面创建一个新文件:

plutommiCustomerCustResourcePLUTO_MMIRes_MMIRes_MyApp.c

头文件不要加StdC.h了

定义一个函数void PopulateMyAppRes(void)

{

七、1.修改makefile

在文件plutommiCustomerResGeneratorMakeFile添加

-I "../../MMI/MainMenu/MainMenuInc"

-I "../../MMI/MyApp/MyAppInc"

2. 修改PopulateRes.c

在文件 PlumommimmiResourcePopulateRes.c里加入(黑体)

/****************************************************************************

* Global Function - Extern

*****************************************************************************/

/* Populate without compile option */

extern void PopulateMyAppRes(void);

void PopulateResData(void)

{

/*****************************************************************************

* Populate Resoruce

*****************************************************************************/

RES_PRINT_INFO("Populating MyApp Resourcen");

}

八、添加资源ID

相当于一个资源空间,基础ID同一定义在plutommiMMIIncMMIDataTypes.h

PopulateMyAppRes();

}

里面加相关资源就行了。

RESOURCE_BASE_ENUM_BEGIN()

„„„„„„

RESOURCE_BASE_RANGE(APP_MYAPP,

在最后前加入

/****************************************************************************

* MyApp App

*****************************************************************************/

#define MYAPP_BASE ((U16) GET_RESOURCE_BASE(APP_MYAPP))

#define MYAPP_BASE_MAX ((U16 GET_RESOURCE_MAX(APP_MYAPP))

RESOURCE_BASE_TABLE_ITEM(APP_MYAPP)

/* please add new resource base table above this line */

/* End of resource table */

RESOURCE_BASE_TABLE_END()

九、主屏幕序号 定义在MyAppDefs.h中

typedef enum

{

SCR_MYAPP_MAIN = MYAPP_BASE+1,

}SCREENID_LIST_MYAPP;

十、字串ID 定义在MyAppDefs.h中

typedef enum

{

STR_MYAPP_HELLO= MYAPP_BASE+1,

}STRINGID_LIST_MYAPP;

十一、字串资源在plutommiCustomerCustResourcePLUTO_MMIref_ 中添加一行

(注:最好不要在Excel 中编辑此文件,因为 Excel 默认会为每个字串加上双引号)

STR_MYAPP_HELLO MyApp 20 Hello,World Hello, World 你好,世界

你好,世界, Hello,World

下面是对表格每一列的描述:

第一列是字串ID,与MyAppDefs.h 中定义的要完全一致。

第二列是字串所属的程序名 (可任意写,仅供自己参考)。

第三列指本字串的最大长度(取所有语言中文本最长的一个)。

第四列是字串描述,也可任意写。

从第五列起就是各种语言所对应的字串。

字串装载

在函数PopulateMyAppRes (Res_MyApp中)中添加一行:

void PopulateMyAppRes(void)

{

ADD_APPLICATION_STRING2(STR_MYAPP_HELLO,"Hello,

World","MyApp.");

}

100),

读取字串使用函数GetString

void mmi_myapp_enrty(void)

{

„„

gui_print_text((UI_string_type)GetString(STR_MYAPP_HELLO));

„„

}

十二、菜单资源

设在[MainMenu][Organizer][Hello,World]。

菜单项ID的头文件全部在plutommiMMIIncGlobalMenuItems.h中:

Enum GLOBALMENUITEMSID

{

IDLE_SCREEN_MENU_ID=1,

„„

MENU_ID_MYAPP_HELLO,

MENU_ID_DEVAPP_START,

MENU_ID_DEVAPP_END=MENU_ID_DEVAPP_START+100,

MAX_MENU_ITEMS_VALUE,

MENU_ITEM_END

};

菜单加载

全部在plutommiCustomerCustResourcePLUTO_MMIRes_MMIRes_MainMenu.c中

**************************************************************/

//Organizer

#if defined(__MMI_VERSION_2__)

typedef enum

{

#ifdef __MMI_MYAPP__

MENU_ENUM_MYAPP_HELLO,

#endif

ORG_ENUM_TOTAL

} OrganizerMenu;

/* oganizer */

ADD_APPLICATION_MENUITEM((MAIN_MENU_ORGANIZER_MENUID,IDLE_SC

#if defined(__MMI_CALENDAR__)

ORGANIZER_CALENDER_MENU,

#endif

#if defined(__MMI_TODOLIST__)

ORGANIZER_TODOLIST_MENU,

#endif

ORGANIZER_ALARM_MENU,

REEN_MENU_ID,ORG_ENUM_TOTAL,

#if defined (__MMI_WORLD_CLOCK__)

ORGANIZER_WORLDCLOCK_MENU,

#endif

#ifdef __MMI_NOTE_APP__

MENU_ID_NOTE_APP_MAIN,

#endif

#ifdef __MMI_MESSAGES_CLUB__

EXTRA_SHORTCUTS_MENUID,

#endif

#ifdef __MMI_UDX_SUPPORT__

MENU_ID_UDX_MAIN_MENU,

#endif

#ifdef __SYNCML_SUPPORT__

MENU_ID_SYNCML_MAIN,

#endif

#ifdef __MMI_SYNCML_DEVICE_SYNC__

MENU_ID_SYNCML_DEV_MAIN,

#endif

#ifdef __MMI_MYAPP__

MENU_ID_MYAPP_HELLO,

#endif

SHOW,MOVEABLEWITHINPARENT|INSERTABLE,DISP_LIST,

MAIN_MENU_ORGANIZER_TEXT,MAIN_MENU_ORGANIZER_ICON));

通过上面三步我们已经将新的菜单项成功插入到工具箱菜单,也就是说我们解决了

菜单几个元素中的“父菜单项”的问题,接着我们来看看其他几项元素。这里我们介绍

下ADD_APPLICATION_MENUITEM这个宏,刚才往工具箱菜单插入我们的菜单项时

已经接触到这个宏了,生成菜单资源用的就是这个宏,接着我们就会用到。这个宏的参

数个数是可变的,其参数具体含义如下:

参数1:菜单项本身的ID,就我们的例子而言是MENU_ID_MYAPP_HELLO

参数2:菜单项的父菜单ID,这里是MAIN_MENU_ORGANIZER_MENUID

参数3:本菜单子菜单个数,假定为N好了,这个参数之后是变参部分,随后的N

个参数为各个子菜单的ID

参数4+N:菜单是否显示,一般为SHOW

参数5+N:菜单其他属性,可以是这些值的组合:NONMOVEABLE,

MOVEABLEWITHOARENT, MOVEABLECROSSPARENT,

SHORTCUTABLE,一般我们就用SHORTCUTABLE就好了。

INSERTABLE,

参数6+N: 下级菜单的显示风格,以下风格任选其一就好:

DISP_LIST—列表显示,常见风格

DISP_MATRIX—矩阵显示,如九格宫、十二格宫,主菜单一般用这种风格

DISP_CIRCULAR_3D—循环3D显示,只有主菜单用到

DISP_PAGE—翻页格式,每个菜单项一页,一般也是主菜单才会用到

DISP_FIXED_GRID—很少用到,可忽略

参数7+N:菜单项显示文本对应的字串资源ID

参数8+N:菜单项对应的小图标的资源ID

加载MENU_ID_MYAPP_HELLO本身:

void PopulateMyAppRes(void)

{

ADD_APPLICATION_MENUITEM((MENU_ID_MYAPP_HELLO,MAIN_MENU_ORGANIZER_MENUID,0,SHO

W,SHORTCUTABLE,DISP_LIST,STR_MYAPP_HELLO,IMG_MYAPP_HELLO));

}

修改MyAppSrc.c

实际上就是给菜单项设定一个响应动作,使之转到我们模块的入口,设置菜单项响应动

作的函数是SetHiliteHandler,设置的动作只需要在系统上电后初始化的部分执行一次就可以

了,这里我们为模块新增一个函数,这个函数专门处理我们模块上电初始化的部分,如下红

色字体所示我们在MyAppSrc.c中增加一下部分:

void mmi_myapp_hilite_hello(void)

{

SetLeftSoftkeyFunction(mmi_myapp_entry, KEY_EVENT_UP);

}

void mmi_myapp_init(void)

{

SetHiliteHandler(MENU_ID_MYAPP_HELLO, mmi_myapp_hilite_hello);

}

这实际上要用两个函数,由这两个函数共同完成菜单点击通知的接收和转入我们模

块主入口的动作。

声明这两个函数

修改MyAppProt.h

extern void mmi_myapp_hilite_hello(void);

修改MyAppGprot.h

extern void mmi_myapp_inti(void);

mmi_myapp_init这个函数是一个外部接口,我们把申明放到MyAppGprot.h中;

mmi_MyApp_hilite_hello这个函数是内部接口,我们把申明放到MyAppProt.h中。然后

我们把mmi_Myapp_init放入到函数InitAllApplications中调用已完成我们模块的初始化

设定.

修改文件“plutommimmiFrameworkTasksTasksSrcMMITask.c”

……

#ifdef __MMI_MYAPP__

#include "MyAppGprot.h"

#endif

……

void InitAllApplications(void)

{

……

#ifdef __MMI_MYAPP__

#include "MyAppGprot.h"

#endif……

}

**

修改此文件编译时需在make文件夹Framework的编译地址后面加上MyApp文件的地

址(如同修改mmi_app一样)。

模拟器的同样需要加上编译路径。

十三、图像资源

图像ID

先在MyAppDefs.h中添加字串ID:

Typedef enum

{

IMG_MYAPP_HELLO=MYAPP_BASE+1,

}IMAGEID_LIST_MYAPP;

新加目录plutommiCustomerImagesPLUTO320X480MainLCD新加入一个MyApp

在MyApp加入一副图片 SB_

装载图片

Void PopulateMyAppRes(void)

{

„„

ADD_APPLICATION_IMAGE2(IMG_MYAPP_HELLO,CUST_IMG_PATH"

MainLCDMyAppSB_","Hello World!");

„„

}

将图片作为菜单ICON

只需要将菜单项的最后一个参数修改就行

void PopulateMyAppRes(void)

{

ADD_APPLICATION_MENUITEM((MENU_ID_MYAPP_HELLO,MAIN_MENU_

ORGANIZER_MENUID,0,SHOW,SHORTCUTABLE,DISP_LIST,STR_MYAPP_HELLO,

IMG_MYAPP_HELLO));

}

Gprs remake一般就行。

2024年9月8日发(作者:纳南烟)

MTK添加新的APP的总流程

一、 添加程序文件

在plutommimmi下建立 MyAppInc(放头文件.h)MyAppRes(资源文件)MyAppSrc

(源文件.c)。

1.在Inc下添加

MyAppGprot.h 对外接口,外部调用函数原型声明于此。

MyAppProt.h 内部接口,内部调用函数原型声明于此。

MyAppDefs.h 定义资源ID。

MyAppTypes.h 定义常量,自定义数据等。

2.在Src下添加

二、

MyAppSrc.c 实现功能的函数。

三、

makeplutommimmi_appmmi_ 加一行

在VC6.0下的FileView下的mmi_app files下add file to project

将文件加入整个项目

/I"....plutommimmiMyAppMyAppInc"

makeplutommimmi_appmmi_ 加一行

/I "....plutommimmiMyAppMyAppSrcMyAppSrc.c

makeplutommimmi_appmmi_ 加一行

/I"....plutommimmiMyAppMyAppSrc

四、

程序开关部分

1、在plutommimmiIncMMI_features_switch.h末尾添加

#define CFG_MMI_MYAPP (__ON__)

2、在plutommiCustomerCustResourcePLUTO_MMI

MMI_features_switchPLUTO.h末尾添加 #defineCFG_MMI_MYAPP (__ON__)

3、在

plutommiCustomerCustResourceTELSDA25_08A_GEMINI_MMIMMI_features_switch

TELSDA25_08A_GEMINI.h末尾添加

#define CFG_MMI_MYAPP (__ON__)

其中,TELSDA25_08A_GEMINI_MMI为MTK源码的工程名

4、在MTKplutommimmiIncMMI_features.h末尾添加

#ifdefined(CFG_MMI_MYAPP) &&((CFG_MMI_MYAPP==__ON__)||(CFG_MMI_MYAPP==

__AUTO__))

#ifndef __MMI_MYAPP__

#define __MMI_MYAPP__

#endif

#endif

五、 模拟器编译环境下添加头文件

F:sssMTKW180A_S_DriveOnlyMoDISmmi_appmmi_下添加一行

/I "....plutommimmiMyAppMyAppInc"

可以 make xxxx gprs new了,如果编译成功,模拟器编不过出现错误1083,就查查看看

在MoDIS会不会有重复的MyAppSrc.c文件,或者模拟器下编译环境有没有添加头文件。

六、添加一项资源通常分三步:原料,ID,装载。

原料:即原材料,如图像就是准备一副新图,字串就是准备各种语言的Unicode 编码。

ID: 即资源项的别名,程序只能通过ID 来获取资源项 (ID 一般定义在XXDefs.h 中)。

装载:装载在编译目标烧录文件之前就会被执行,其目的有两个:一是将原材料转换成

二进制数据,二是生成将ID 与二进制数据联系起来的映射表。

资源装载预编译程序是plutommiCustomerResGeneratormtk_,这个程序

在每次编译目标烧录文件之前临时编译生成的。下面的修改基本上与这个程序有关。

添加文件

在plutommiCustomerCustResourcePLUTO_MMIRes_MMI

下面创建一个新文件:

plutommiCustomerCustResourcePLUTO_MMIRes_MMIRes_MyApp.c

头文件不要加StdC.h了

定义一个函数void PopulateMyAppRes(void)

{

七、1.修改makefile

在文件plutommiCustomerResGeneratorMakeFile添加

-I "../../MMI/MainMenu/MainMenuInc"

-I "../../MMI/MyApp/MyAppInc"

2. 修改PopulateRes.c

在文件 PlumommimmiResourcePopulateRes.c里加入(黑体)

/****************************************************************************

* Global Function - Extern

*****************************************************************************/

/* Populate without compile option */

extern void PopulateMyAppRes(void);

void PopulateResData(void)

{

/*****************************************************************************

* Populate Resoruce

*****************************************************************************/

RES_PRINT_INFO("Populating MyApp Resourcen");

}

八、添加资源ID

相当于一个资源空间,基础ID同一定义在plutommiMMIIncMMIDataTypes.h

PopulateMyAppRes();

}

里面加相关资源就行了。

RESOURCE_BASE_ENUM_BEGIN()

„„„„„„

RESOURCE_BASE_RANGE(APP_MYAPP,

在最后前加入

/****************************************************************************

* MyApp App

*****************************************************************************/

#define MYAPP_BASE ((U16) GET_RESOURCE_BASE(APP_MYAPP))

#define MYAPP_BASE_MAX ((U16 GET_RESOURCE_MAX(APP_MYAPP))

RESOURCE_BASE_TABLE_ITEM(APP_MYAPP)

/* please add new resource base table above this line */

/* End of resource table */

RESOURCE_BASE_TABLE_END()

九、主屏幕序号 定义在MyAppDefs.h中

typedef enum

{

SCR_MYAPP_MAIN = MYAPP_BASE+1,

}SCREENID_LIST_MYAPP;

十、字串ID 定义在MyAppDefs.h中

typedef enum

{

STR_MYAPP_HELLO= MYAPP_BASE+1,

}STRINGID_LIST_MYAPP;

十一、字串资源在plutommiCustomerCustResourcePLUTO_MMIref_ 中添加一行

(注:最好不要在Excel 中编辑此文件,因为 Excel 默认会为每个字串加上双引号)

STR_MYAPP_HELLO MyApp 20 Hello,World Hello, World 你好,世界

你好,世界, Hello,World

下面是对表格每一列的描述:

第一列是字串ID,与MyAppDefs.h 中定义的要完全一致。

第二列是字串所属的程序名 (可任意写,仅供自己参考)。

第三列指本字串的最大长度(取所有语言中文本最长的一个)。

第四列是字串描述,也可任意写。

从第五列起就是各种语言所对应的字串。

字串装载

在函数PopulateMyAppRes (Res_MyApp中)中添加一行:

void PopulateMyAppRes(void)

{

ADD_APPLICATION_STRING2(STR_MYAPP_HELLO,"Hello,

World","MyApp.");

}

100),

读取字串使用函数GetString

void mmi_myapp_enrty(void)

{

„„

gui_print_text((UI_string_type)GetString(STR_MYAPP_HELLO));

„„

}

十二、菜单资源

设在[MainMenu][Organizer][Hello,World]。

菜单项ID的头文件全部在plutommiMMIIncGlobalMenuItems.h中:

Enum GLOBALMENUITEMSID

{

IDLE_SCREEN_MENU_ID=1,

„„

MENU_ID_MYAPP_HELLO,

MENU_ID_DEVAPP_START,

MENU_ID_DEVAPP_END=MENU_ID_DEVAPP_START+100,

MAX_MENU_ITEMS_VALUE,

MENU_ITEM_END

};

菜单加载

全部在plutommiCustomerCustResourcePLUTO_MMIRes_MMIRes_MainMenu.c中

**************************************************************/

//Organizer

#if defined(__MMI_VERSION_2__)

typedef enum

{

#ifdef __MMI_MYAPP__

MENU_ENUM_MYAPP_HELLO,

#endif

ORG_ENUM_TOTAL

} OrganizerMenu;

/* oganizer */

ADD_APPLICATION_MENUITEM((MAIN_MENU_ORGANIZER_MENUID,IDLE_SC

#if defined(__MMI_CALENDAR__)

ORGANIZER_CALENDER_MENU,

#endif

#if defined(__MMI_TODOLIST__)

ORGANIZER_TODOLIST_MENU,

#endif

ORGANIZER_ALARM_MENU,

REEN_MENU_ID,ORG_ENUM_TOTAL,

#if defined (__MMI_WORLD_CLOCK__)

ORGANIZER_WORLDCLOCK_MENU,

#endif

#ifdef __MMI_NOTE_APP__

MENU_ID_NOTE_APP_MAIN,

#endif

#ifdef __MMI_MESSAGES_CLUB__

EXTRA_SHORTCUTS_MENUID,

#endif

#ifdef __MMI_UDX_SUPPORT__

MENU_ID_UDX_MAIN_MENU,

#endif

#ifdef __SYNCML_SUPPORT__

MENU_ID_SYNCML_MAIN,

#endif

#ifdef __MMI_SYNCML_DEVICE_SYNC__

MENU_ID_SYNCML_DEV_MAIN,

#endif

#ifdef __MMI_MYAPP__

MENU_ID_MYAPP_HELLO,

#endif

SHOW,MOVEABLEWITHINPARENT|INSERTABLE,DISP_LIST,

MAIN_MENU_ORGANIZER_TEXT,MAIN_MENU_ORGANIZER_ICON));

通过上面三步我们已经将新的菜单项成功插入到工具箱菜单,也就是说我们解决了

菜单几个元素中的“父菜单项”的问题,接着我们来看看其他几项元素。这里我们介绍

下ADD_APPLICATION_MENUITEM这个宏,刚才往工具箱菜单插入我们的菜单项时

已经接触到这个宏了,生成菜单资源用的就是这个宏,接着我们就会用到。这个宏的参

数个数是可变的,其参数具体含义如下:

参数1:菜单项本身的ID,就我们的例子而言是MENU_ID_MYAPP_HELLO

参数2:菜单项的父菜单ID,这里是MAIN_MENU_ORGANIZER_MENUID

参数3:本菜单子菜单个数,假定为N好了,这个参数之后是变参部分,随后的N

个参数为各个子菜单的ID

参数4+N:菜单是否显示,一般为SHOW

参数5+N:菜单其他属性,可以是这些值的组合:NONMOVEABLE,

MOVEABLEWITHOARENT, MOVEABLECROSSPARENT,

SHORTCUTABLE,一般我们就用SHORTCUTABLE就好了。

INSERTABLE,

参数6+N: 下级菜单的显示风格,以下风格任选其一就好:

DISP_LIST—列表显示,常见风格

DISP_MATRIX—矩阵显示,如九格宫、十二格宫,主菜单一般用这种风格

DISP_CIRCULAR_3D—循环3D显示,只有主菜单用到

DISP_PAGE—翻页格式,每个菜单项一页,一般也是主菜单才会用到

DISP_FIXED_GRID—很少用到,可忽略

参数7+N:菜单项显示文本对应的字串资源ID

参数8+N:菜单项对应的小图标的资源ID

加载MENU_ID_MYAPP_HELLO本身:

void PopulateMyAppRes(void)

{

ADD_APPLICATION_MENUITEM((MENU_ID_MYAPP_HELLO,MAIN_MENU_ORGANIZER_MENUID,0,SHO

W,SHORTCUTABLE,DISP_LIST,STR_MYAPP_HELLO,IMG_MYAPP_HELLO));

}

修改MyAppSrc.c

实际上就是给菜单项设定一个响应动作,使之转到我们模块的入口,设置菜单项响应动

作的函数是SetHiliteHandler,设置的动作只需要在系统上电后初始化的部分执行一次就可以

了,这里我们为模块新增一个函数,这个函数专门处理我们模块上电初始化的部分,如下红

色字体所示我们在MyAppSrc.c中增加一下部分:

void mmi_myapp_hilite_hello(void)

{

SetLeftSoftkeyFunction(mmi_myapp_entry, KEY_EVENT_UP);

}

void mmi_myapp_init(void)

{

SetHiliteHandler(MENU_ID_MYAPP_HELLO, mmi_myapp_hilite_hello);

}

这实际上要用两个函数,由这两个函数共同完成菜单点击通知的接收和转入我们模

块主入口的动作。

声明这两个函数

修改MyAppProt.h

extern void mmi_myapp_hilite_hello(void);

修改MyAppGprot.h

extern void mmi_myapp_inti(void);

mmi_myapp_init这个函数是一个外部接口,我们把申明放到MyAppGprot.h中;

mmi_MyApp_hilite_hello这个函数是内部接口,我们把申明放到MyAppProt.h中。然后

我们把mmi_Myapp_init放入到函数InitAllApplications中调用已完成我们模块的初始化

设定.

修改文件“plutommimmiFrameworkTasksTasksSrcMMITask.c”

……

#ifdef __MMI_MYAPP__

#include "MyAppGprot.h"

#endif

……

void InitAllApplications(void)

{

……

#ifdef __MMI_MYAPP__

#include "MyAppGprot.h"

#endif……

}

**

修改此文件编译时需在make文件夹Framework的编译地址后面加上MyApp文件的地

址(如同修改mmi_app一样)。

模拟器的同样需要加上编译路径。

十三、图像资源

图像ID

先在MyAppDefs.h中添加字串ID:

Typedef enum

{

IMG_MYAPP_HELLO=MYAPP_BASE+1,

}IMAGEID_LIST_MYAPP;

新加目录plutommiCustomerImagesPLUTO320X480MainLCD新加入一个MyApp

在MyApp加入一副图片 SB_

装载图片

Void PopulateMyAppRes(void)

{

„„

ADD_APPLICATION_IMAGE2(IMG_MYAPP_HELLO,CUST_IMG_PATH"

MainLCDMyAppSB_","Hello World!");

„„

}

将图片作为菜单ICON

只需要将菜单项的最后一个参数修改就行

void PopulateMyAppRes(void)

{

ADD_APPLICATION_MENUITEM((MENU_ID_MYAPP_HELLO,MAIN_MENU_

ORGANIZER_MENUID,0,SHOW,SHORTCUTABLE,DISP_LIST,STR_MYAPP_HELLO,

IMG_MYAPP_HELLO));

}

Gprs remake一般就行。

发布评论

评论列表 (0)

  1. 暂无评论