MTK入门.docx
- 文档编号:7613392
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:13
- 大小:20.27KB
MTK入门.docx
《MTK入门.docx》由会员分享,可在线阅读,更多相关《MTK入门.docx(13页珍藏版)》请在冰豆网上搜索。
MTK入门
MTK平台入门
简介
1.1目的及其应用范围
本文档介绍了mtk平台的一些基础应用和实现,适用于刚参加mtk软件开发人员
1.2术语定义
MMI-Man-machineinterface,人机界面
FMI-FeaturerichMMI
1.3参考资料
[1]MMIHighleveldesignspecification,pixtel
平台安装:
安装ads1.2
安装perl
安装usb驱动,用于下载
编译命令:
通过new,update,remake,cleanall,cleanmodules,codegen.来动作生成binfile(二进字文件)
类如:
假设项目是gsm项目,项目名称为m720,则有这些命令:
makecustom=m720gsmresgen(修改了资源时用这个命令生成新资源)
makecustom=m720gsmremake(用于生成bin档即可烧录到手机的文件)
makecustom=m720gsmcleancustom(把custom模块生成的obj文件删除)
makecustom=m720gsmupdatecustom(updatecustom模块)
makecustom=m720gsmnew(等于执行了前三个步骤,即clean、resgen、remake)
makecustom=m720gsmupdatemmiresource(更新了资源但不会更新代码)
添加一个字符串:
首先给该字符串起一个名字,即ID:
如STR_GLOBAL_OK,这个即是一个字串的id也就是名字,而这个字串的具体内容(比如STR_GLOBAL_OK的内容是“Ok”),可以用下面的语句来添加,
ADD_APPLICATION_STRING2(STR_GLOBAL_OK,"Ok","GlobalString-OK");
如果有对应的中文字符,则应在ref_list.txt中按照固定的格式添加中文字串。
如:
STR_GLOBAL_OKGLOBAL6GlobalString-OKOk確定确定
添加一个菜单:
首先给这个菜单起一个名字,即ID:
如ORGANIZER_CALENDER_MENU,这个即是一个菜单的id也就是名字,但要把这个菜单加入到某个父菜单之下,则须指定其父菜单,方式可以参照:
ORGANIZER_CALENDER_MENU这个菜单的方法,在res_mainmenu.c里,
ADD_APPLICATION_MENUITEM((MAIN_MENU_ORGANIZER_MENUID,IDLE_SCREEN_MENU_ID,ORG_ENUM_TOTAL,
#ifdefined(__MMI_CALENDAR__)
ORGANIZER_CALENDER_MENU,
#endif
#ifdefined(__MMI_TODOLIST__)
ORGANIZER_TODOLIST_MENU,
#endif
ORGANIZER_ALARM_MENU,
#ifdefined(__MMI_WORLD_CLOCK__)
ORGANIZER_WORLDCLOCK_MENU,
#endif
#ifdef__MMI_MESSAGES_CLUB__
MAIN_MENU_SHORTCUTS_MENUID,
#endif
#ifdef__SLT_LONG_DISTANCE_DDD__
MENU_LONG_DISTANCE_DDD,
#endif
SHOW,MOVEABLEACROSSPARENT,DISP_LIST,
MAIN_MENU_ORGANIZER_TEXT,MAIN_MENU_ORGANIZER_ICON));
这个语句说明菜单ORGANIZER_CALENDER_MENU是菜单MAIN_MENU_ORGANIZER_MENUID的子菜单。
而在res_organizer.c里,
ADD_APPLICATION_MENUITEM((ORGANIZER_CALENDER_MENU,MAIN_MENU_ORGANIZER_MENUID,
3,
MENU_GOTO_TASK_CAL,
MENU_ID_CLNDR_JUMP_TO_DATE,
MENU_CAL_TYPE,
SHOW,
MOVEABLETOSHORTCUT,DISP_LIST,
ORGANIZER_MENU_CALENDER_STRINGID,ORGANIZER_MENU_CALENDER_IMAGEID));
这个语句则声明了ORGANIZER_CALENDER_MENU菜单所拥有的子菜单。
关于宏ADD_APPLICATION_STRING2()、ADD_APPLICATION_MENUITEM()可以参考文件WritingApplicationsUsingPixtelMMIPlatform.pdf
更深入的了解可以查看文件夹Document\MMIDesignDocuments\Pixtel下的文件。
下载程序:
在当前工程build文件夹中找到对应的项目,打开项目文件夹,里面有*.bin文件就是我们要下载的文件。
编译错误信息查看:
如果在编译中某一模块编译不通过,我们可以在build\项目名称\log中查看log信息
模拟器运行:
首先安装好VC,然后直接运行工程目录下的PLUTOMMI\mmi\PixtelMMI.dsw文件,先编译资源文件,然后执行运行就可以了。
修改铃声资源:
一般项目开发修改的铃声资源主要是来电铃声,开关机铃声,翻合盖提示音,信息提示音
9.1.修改来电闹钟铃声资源:
修改的文件是custpack_audio.c中
constcustpack_audio_headercustpack_audio=
{15,
{
{Y300Mid01_mp3,sizeof(Y300Mid01_mp3),5},
{Y300Mid02_mid,sizeof(Y300Mid02_mid),17},
{Y300Mid03_mid,sizeof(Y300Mid03_mid),17},
{Y300Mid04_mid,sizeof(Y300Mid04_mid),17},
{Y300Mid05_mid,sizeof(Y300Mid05_mid),17},
{Y300Mid06_mid,sizeof(Y300Mid06_mid),17},
{Y300Mid07_mid,sizeof(Y300Mid07_mid),17},
{Y300Mid08_mid,sizeof(Y300Mid08_mid),17},
{Y300Mid09_mid,sizeof(Y300Mid09_mid),17},
{Y300Mid10_mid,sizeof(Y300Mid10_mid),17},
{Y300Mid11_mid,sizeof(Y300Mid11_mid),17},
{Y300Mid12_mid,sizeof(Y300Mid12_mid),17},
{Y300Mid13_mid,sizeof(Y300Mid13_mid),17},
{Y300Mid14_mid,sizeof(Y300Mid14_mid),17},
{Y300Mid15_mp3,sizeof(Y300Mid15_mp3),5},
}
custpack_audio数组第一个参数是铃声总数
第二个参数是铃声list,其中包含铃声数据,大小,类型,
铃声数据可以用MCT这个工具转换,然后代替各个数组的数据,提示最好不要修改数组名称
类型可以在mdi_audio.h中查找,类如这里的5代表mp3,17代表mid
9.2修改开关机铃声,翻合盖提示音,信息提示音
resource_audio.c---------------------开关机铃声,翻合盖提示音,信息提示音
开关机铃声和翻合盖提示音对应的数组是一样的
constaudio_resource_structmtk_resource_sounds[]={
{resource01_mid,sizeof(resource01_mid),17},
{resource02_mid,sizeof(resource02_mid),17},
{resource03_mid,sizeof(resource03_mid),17},
{resource04_mid,sizeof(resource04_mid),17},
{resource05_mid,sizeof(resource05_mid),17},
{resource06_mid,sizeof(resource06_mid),17},
{resource07_mid,sizeof(resource07_mid),17},
{resource08_mid,sizeof(resource08_mid),17},
};
信息提示音对应的数组是:
constaudio_resource_structmtk_resource_message_sounds[]={
{message01_mp3,sizeof(message01_mp3),5},
{message02_mp3,sizeof(message02_mp3),5},
{message03_mid,sizeof(message03_mid),17},
{message04_mid,sizeof(message04_mid),17},
{message05_mid,sizeof(message05_mid),17},
{message06_mid,sizeof(message06_mid),17},
{message07_mid,sizeof(message07_mid),17},
{message08_mid,sizeof(message08_mid),17},
{message09_mid,sizeof(message09_mid),17},
{message10_mid,sizeof(message10_mid),17},
};
9.3调整铃声总数和id
resource_audio.h--------------------设置铃声id和总数
铃声ID大小不需要调整,只是根据铃声总数变了,增加或者减少ID
修改图片资源:
添加图片资源一般用这个函数:
ADD_APPLICATION_IMAGE2,它的参数分别是:
图片ID,图片放置路径,图片用途描述。
类如:
ADD_APPLICATION_IMAGE2(MAIN_MENU_SYSTEM_ICON,CUST_IMG_PATH"\\\\MainLCD\\\\MainMenu\\\\BI_DEGREE\\\\MM_ITEM.gif","Iconusedforsysteminmainmenu");
图片资源的修改主要分几种情况:
10.1直接替换图片资源,不需要调整座标:
类如开关机动画,墙纸,开关机mp4等,这种修改资源很简单,但是修改时要注意图片来名称和类型与代码中是否匹配。
10.2修改需要调整座标的图片:
如日历,计算器等,这些图片修改需要ID给出座标,然后我们在代码中修改。
10.3修改用tools生成座标的图片:
主要是MP3,MP4,FM,世界时钟,座标调整可以用mcttools来做。
关于这个工具的使用
10.4主题的修改也可以mcttools来做
MTK快速上手培训
关于编译:
资源的编译:
1).需要编译资源的情况:
在如下的修改情况下,我们需要重编译资源:
a.修改了..plutommi\Customer\CustResource\PLUTO_MMI\目录下的文件如字库文件
(FontRes.c、L_**.h文件)、MMI配置文件(MMI_featuresPLUTO.h)、字符串资源文件
(Ref_list.txt)等;
修改了..plutommi\Customer\CustResource\PLUTO_MMI\Res_MMI目录下的文件,这个目
录下的文件都是Res_*.*文件,是各个AP或模块的资源配置文件,包含菜单、图片、
字符串资源的配置;
注:
Cust*.*文件是资源编译生成的,不能手动修改。
2).编译方法:
进入..\plutommi\Customer目录,执行remakeResource.bat批处理文件。
编译成功会生成一些Cust*.*文件在\plutommi\Customer\CustResource目录下,编译代码时再编译这些文件;
编译失败到build目录下查看log文件àres_gen.txt,可看到出错信息。
3).当我们改变了资源,想在PC模拟上看到修改效果时,也需要先执行如上的资源编译命令,
再在VC环境下build一下资源,就可以看到效果了。
代码的编译:
有如下的编译命令:
makecustom=WTO114_6219gprsnew
makecustom=WTO114_6219gprsupdate
makecustom=WTO114_6219gprsremake
makecustom=WTO114_6219gprsclean
这些编译命令做在build.bat中,我们输入相应的选项就可。
编译成功后,在build目录下生成所有的.obj,编译信息log文件、下载.bin文件等;
编译失败时,到build目录下查看相应的log文件,可看到出错信息。
以上是我们的WTO114工程,几个关键字解释如下:
1).WTO114_6219,Project名,对应make目录下的WTO114_6219_GPRS.mak文件;
2)最后一个关键字:
new:
不管资源、代码是否有改变,全部重编;
update:
扫描资源、代码的改变,有改变的重编,无改变的不编;
remake:
不扫描资源,只扫描代码的改变,有改变的重编,资源和无改变的代码不编;
clean:
清除build目录下的所有内容,保留目录结构。
菜单的修改或增加:
以一个例子的方式介绍如何添加一个菜单,例子如下:
在主菜单的“设置”菜单下增加一个“我的设定”子菜单,“我的设定”下有两个子菜单:
“我
的设定1”和“我的设定2”,打开这两个菜单,分别显示一幅动画。
步骤如下:
1.在..\plutommi\mmi\Setting\SettingInc目录下的SettingDefs.h文件中增加如下内容:
a.enumSTR_SETTING_LIST的最后增加三个字符串ID的声明:
STR_MY_SETTING,
STR_MY_SETTING1,
STR_MY_SETTING2,
b.enumSCR_SETTING_LIST的最后增加三个ScreenID的声明:
SCR_MY_SETTING,
SCR_MY_SETTING1,
SCR_MY_SETTING2,
c.enumIMG_SETTING_LIST的最后增加一个ImageID的声明:
IMG_MY_SETTING,
d.在..\plutommi\mmi\Inc目录下GlobalMenuItems.h文件中enumGLOBALMENUITEMSID
的最后增加三个菜单ID的声明:
(有的是在本AP或模块的*Defs.h中声明)
MENU_MY_SETTING,
MENU_MY_SETTING1,
MENU_MY_SETTING2,
2.在..\plutommi\Customer\CustResource\PLUTO_MMI目录下的Ref_list.txt中添加三个字符串:
STR_MY_SETTINGUndefined10MySettingMySetting我的设定我的设定
STR_MY_SETTING1Undefined10MySetting1MySetting1我的设定1我的设定1
STR_MY_SETTING2Undefined10MySetting2MySetting2我的设定2我的设定2
3.在..\plutommi\Customer\CustResource\PLUTO_MMI\Res_MMI目录下的Res_Setting.c增加如下
资源:
ADD_APPLICATION_MENUITEM((MENU_MY_SETTING,MAIN_MENU_SETTINGS_MENUID,2,MENU_MY_SETTING1,MENU_MY_SETTING2,SHOW,MOVEABLEWITHINPARENT,
DISP_LIST,STR_MY_SETTING,0));
ADD_APPLICATION_MENUITEM((MENU_MY_SETTING1,MENU_MY_SETTING,0,SHOW,
MOVEABLEWITHINPARENT,DISP_LIST,STR_MY_SETTING1,0));
ADD_APPLICATION_MENUITEM((MENU_MY_SETTING2,MENU_MY_SETTING,0,SHOW,
MOVEABLEWITHINPARENT,DISP_LIST,STR_MY_SETTING2,0));
ADD_APPLICATION_IMAGE2(IMG_MY_SETTING,CUST_IMG_PATH"\\\\MainLCD\\\\SubMenu\
\\\Settings\\\\MY_SETTING.GIF","MySetting.");
ADD_APPLICATION_STRING2(STR_MY_SETTING,"MySetting","MySetting");
ADD_APPLICATION_STRING2(STR_MY_SETTING1,"MySetting1","MySetting1");
ADD_APPLICATION_STRING2(STR_MY_SETTING2,"MySetting2","MySetting2");
4.在..\plutommi\Customer\CustResource\PLUTO_MMI\Res_MMI目录下的Res_MainMenu.c中修改如下:
ADD_APPLICATION_MENUITEM((MAIN_MENU_SETTINGS_MENUID,IDLE_SCREEN_
MENU_ID,5,
MENU9102_INITIAL_SETUP,
.
.
.
改为:
ADD_APPLICATION_MENUITEM((MAIN_MENU_SETTINGS_MENUID,IDLE_SCREEN_
MENU_ID,6,
MENU_MY_SETTING,
MENU9102_INITIAL_SETUP,
.
.
.
5.在..\plutommi\mmi\Setting\SettingInc\目录下的SettingProt.h中增加如下的函数声明:
voidHighlightMySetting(void);
voidHighlightMySetting1(void);
voidHighlightMySetting2(void);
voidEntryMySetting(void);
voidEntryMySetting1(void);
voidEntryMySetting2(void);
6.在..\plutommi\mmi\Setting\SettingSrc\目录下的SettingSrc.c中增加如下的函数定义:
voidHighlightMySetting(void)
{
SetKeyHandler(GoBackHistory,KEY_LEFT_ARROW,KEY_EVENT_DOWN);
SetRightSoftkeyFunction(GoBackHistory,KEY_EVENT_UP);
SetKeyHandler(EntryMySetting,KEY_RIGHT_ARROW,KEY_EVENT_DOWN);
SetLeftSoftkeyFunction(EntryMySetting,KEY_EVENT_UP);
}
voidHighlightMySetting1(void)
{
SetKeyHandler(GoBackHistory,KEY_LEFT_ARROW,KEY_EVENT_DOWN);
SetRightSoftkeyFunction(GoBackHistory,KEY_EVENT_UP);
SetKeyHandler(EntryMySetting1,KEY_RIGHT_ARROW,KEY_EVENT_DOWN);
SetLeftSoftkeyFunction(EntryMySetting1,KEY_EVENT_UP);
}
voidHighlightMySetting2(void)
{
SetKeyHandler(GoBackHistory,KEY_LEFT_ARROW,KEY_EVENT_DOWN);
SetRightSoftkeyFunction(GoBackHistory,KEY_EVENT_UP);
SetKeyHandler(EntryMySetting2,KEY_RIGHT_ARROW,KEY_EVENT_DOWN);
SetLeftSoftkeyFunction(EntryMySetting2,KEY_EVENT_UP);
}
voidEntryMySetting(void)
{
U16nStrItemList[MAX_SUB_MENUS];/*Storesthestringsidofsubmenusreturned*/
U16nNumofItem;/*Storesnoofchildreninthesubmenu*/
U8*guiBuffer;/*Bufferholdinghistorydata*/
U16ImageList[MAX_SUB_MENUS];
EntryNewScreen(SCR_MY_SETTING,NULL,EntryMySetting,NULL);
/*2Getcurrentscreentoguibufferforhistorypurposes*/
guiBuffer=GetCurrGuiBuf
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MTK 入门