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一般就行。