华禹旋风001手机DIY全攻略
华禹旋风001手机开发模块采用MTK6225平台,除了手机功能及可用于行业产品以外,其提供的MTK C语言开发环境及配套代码可实现手机界面、程序的更改,真正实现了手机的DIY。
下面,我们就从一个简单的例子看她是怎样实现DIY的吧!
我们的目标是:
- 在主菜单"设置"下增加一个子菜单"我的设定"
- 然后在"我的设定"下再加两个子菜单"我的设定1"和"我的设定2"。
在此,我们假定您已经了解了P1300软件相关的开发工具及使用,资料可从http://www.study-bbs.com/dispbbs.asp?boardID=45&ID=27193&page=1下载。
好了,那就让我们开始吧:
- 1. 在~\plutommi\mmi\Setting\SettingInc\SettingDefs.h文件中添加如下内容:
1) enum STR_SETTING_LIST的最后增加三个字符串ID的声明:
STR_MY_SETTING, STR_MY_SETTING1,STR_MY_SETTING2,
2) enum SCR_SETTING_LIST的最后增加三个屏幕ID的声明:
SCR_MY_SETTING, SCR_MY_SETTING1,SCR_MY_SETTING2,
3) enum IMG_SETTING_LIST的最后增加三个图标ID的声明:
IMG_MY_SETTING, IMG_MY_SETTING1,IMG_MY_SETTING2,
-
2. 在~\plutommi\mmi\Inc\GlobalMenuItems.h文件enum GLOBALMENUITEMSID的最后添加三个菜单ID的声明:
MENU_MY_SETTING,
MENU_MY_SETTING1,
MENU_MY_SETTING2,
-
3. 在~\plutommi\Customer\CustResource\PLUTO_MMI\ref_list.txt中添加三个字符串:
STR_MY_SETTING Undefined 10 My Setting My Setting 我的设定 我的设定
STR_MY_SETTING1 Undefined 10 My Setting1 My Setting1 我的设定1 我的设定1
STR_MY_SETTING2 Undefined 10 My Setting2 My Setting2 我的设定2 我的设定2
注意用UltraEdit打开,字符串之间用TAB键隔开。
-
4. 在~\plutommi\Customer\CustResource\PLUTO_MMI\Res_MMI\Res_Setting.c文件populateSettingMenu函数中添加如下资源:
ADD_APPLICATION_MENUITEM((MENU_MY_SETTING,
MAIN_MENU_SETTINGS_MENUID,2,MENU_MY_SETTING1,
MENU_MY_SETTING2,SHOW, MOVEABLEWITHINPARENT,
DISP_LIST,STR_MY_SETTING,IMG_MY_SETTING));
ADD_APPLICATION_MENUITEM((MENU_MY_SETTING1,
MENU_MY_SETTING,0,SHOW,
MOVEABLEWITHINPARENT, DISP_LIST,STR_MY_SETTING1,IMG_MY_SETTING1));
ADD_APPLICATION_MENUITEM((MENU_MY_SETTING2,
MENU_MY_SETTING,0,SHOW,MOVEABLEWITHINPARENT, DISP_LIST,STR_MY_SETTING2,IMG_MY_SETTING2));
ADD_APPLICATION_IMAGE2(IMG_MY_SETTING,CUST_IMG_PATH"\\\\MainLCD\\\\SubMenu\\\\Settings\\\\MY_SETTING.pbm","My Setting");
ADD_APPLICATION_IMAGE2(IMG_MY_SETTING,CUST_IMG_PATH"\\\\MainLCD\\\\SubMenu\\\\Settings\\\\MY_SETTING1.pbm","My Setting1");
ADD_APPLICATION_IMAGE2(IMG_MY_SETTING,CUST_IMG_PATH"\\\\MainLCD\\\\SubMenu\\\\Settings\\\\MY_SETTING2.pbm","My Setting2");
ADD_APPLICATION_STRING2(STR_MY_SETTING,"My Setting","My Setting");
ADD_APPLICATION_STRING2(STR_MY_SETTING1,"My Setting1","My Setting1");
ADD_APPLICATION_STRING2(STR_MY_SETTING2,"My Setting2","My Setting2");
注意,此处我们在~\plutommi\Customer\Images\PLUTO240X320\MainLCD\Submenu\Settings目录下添加三个图标文件,并将名字改为MY_SETTING.pbm,MY_SETTING1.pbm,MY_SETTING2.pbm,如果是其他格式图片的话后缀名也相应改变。
-
5. 在~\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,
.
.
.
-
6. 在~\plutommi\mmi\Setting\SettingInc\目录下SettingProt.h中增加如下的函数声明:
void HighlightMySetting(void);
void HighlightMySetting1(void);
void HighlightMySetting2(void);
void EntryMySetting(void);
void EntryMySetting1(void);
void EntryMySetting2(void);
-
7. 在~\plutommi\mmi\Setting\SettingSrc\目录下SettingSrc.c中增加如下的函数定义:
void HighlightMySetting(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);
}
void HighlightMySetting1(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);
}
void HighlightMySetting2(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);
}
void EntryMySetting(void)
{
U16 nStrItemList[MAX_SUB_MENUS]; /* Stores the strings id of submenus returned */
U16 nNumofItem; /* Stores no of children in the submenu*/
U8* guiBuffer; /* Buffer holding history data */
U16 ImageList[MAX_SUB_MENUS];
EntryNewScreen(SCR_MY_SETTING, NULL, EntryMySetting, NULL);
/* 2 Get current screen to guibuffer for history purposes*/
guiBuffer= GetCurrGuiBuffer(SCR_MY_SETTING);
/* 3. Retrieve no of child of menu item to be displayed */
nNumofItem= GetNumOfChild(MENU_MY_SETTING);
/* 4. Retrieve string ids in sequence of given menu item to be displayed */
GetSequenceStringIds(MENU_MY_SETTING,nStrItemList);
GetSequenceImageIds(MENU_MY_SETTING, ImageList);
/* 5 Set current parent id*/
SetParentHandler(MENU_MY_SETTING);
/* 6 Register highlight handler to be called in menu screen */
RegisterHighlightHandler(ExecuteCurrHiliteHandler);
/* 7 Display Category1 Screen */
ShowCategory15Screen(STR_MY_SETTING, IMG_SCR_SETTING_CAPTION, STR_GLOBAL_OK, IMG_GLOBAL_OK,STR_GLOBAL_BACK, IMG_GLOBAL_BACK, nNumofItem, nStrItemList, ImageList, LIST_MENU, 0, guiBuffer);
/* 8.Register function with right softkey*/
SetRightSoftkeyFunction(GoBackHistory,KEY_EVENT_UP);
}
void EntryMySetting1(void)
{
S8 * string = GetString(STR_MY_SETTING1);
U16 imageId= IMG_MY_SETTING;
EntryNewScreen(SCR_MY_SETTING1, NULL, EntryMySetting1,NULL);
ShowCategory65Screen((U8*)string,imageId,NULL);
SetRightSoftkeyFunction(GoBackHistory,KEY_EVENT_UP);
}
void EntryMySetting2(void)
{
S8 * string = GetString(STR_MY_SETTING2);
U16 imageId= IMG_MY_SETTING;
EntryNewScreen(SCR_MY_SETTING2, NULL, EntryMySetting2, NULL);
ShowCategory65Screen((U8*)string,imageId,NULL);
SetRightSoftkeyFunction(GoBackHistory,KEY_EVENT_UP);
}
-
8. 在~\plutommi\mmi\Setting\SettingSrc\目录下的SettingSrc.c中void InitSettingApp(void)函数下增加如下代码:
SetHiliteHandler(MENU_MY_SETTING,HighlightMySetting);
SetHiliteHandler(MENU_MY_SETTING1,HighlightMySetting1);
SetHiliteHandler(MENU_MY_SETTING2,HighlightMySetting2);
至此,我们的添加任务基本完成,当然,这只是一个比较简单的添加,今后我们将继续实现更多功能的改变。编译通过并模拟后,其效果如下:
当然,也可以改变语言