mtk添加资源

 平台mt6225_0812

在做这些之前,需要完成上一篇mtk添加项目里的内容

 

1,plutommi/Customer/CustResource/PLUTO_MMI/Res_MMI文件夹下新建

        Res_FirstApp.c源文件,添加内容如下:

        

#include "MMIDataType.h"

#include "CustomCfg.h"

 

#ifdef FIRST_PASS

#include "BuildCfg.h"

#endif

 

#include "MMI_features.h"

#include "ComposeRingToneDefs.h"

#include "FirstAppDefs.h"

 

#ifdef DEVELOPER_BUILD_FIRST_PASS

#include "PopulateRes.h"

 

void PopulateFirstAppRes(void)

{

}

#endif

 

 

2,打开文件plutommi/Customer/ResGenerator/MakeFile,

       -I "../customerinc"  /下添加

   -I "../../MMI/FirstApp/FirstAppInc"  /

3,打开plutommi/mmi/Resource/PopulateRes.c文件

(1)找到:

           #ifdef __MMI_CCA_SUPPORT__

           extern void PopulateCCARes(void);

           #endif

         在此下面添加:

          #ifdef __MMI_FIRSTAPP__

          extern void PopulateFirstAppRes(void);

          #endif

      (2)找到:

          

                  PRINT_INFORMATION(("Populating Alarm Resources/n"));

                  PopulateAlarmRes();      

         在其下面添加

             #ifdef __MMI_FIRSTAPP__

           PRINT_INFORMATION(("Populating FirstApp Resource/n"));

               PopulateFirstAppRes();

            #endif

 至此资源已添加进来了,下一步就是要添加资源的ID

4,打开文件plutommi/mmi/Inc/MMIDataType.h

(1)找到 RESOURCE_BASE_RANGE(HEALTH_BMI,                 50),

   在其下面添加:    

      #ifdef __MMI_FIRSTAPP__

      RESOURCE_BASE_RANGE(FIRSTAPP,                 50),

      #endif

  (2找到

#define RMGR_BASE ((U16) RESOURCE_BASE_RMGR)

#define RMGR                                    RMGR_BASE

#define RMGR_BASE_MAX ((U16)RESOURCE_BASE_RMGR_END)

RESOURCE_BASE_TABLE_ITEM(RMGR)

 

         在其下面添加:

 

#ifdef __MMI_FIRSTAPP__

 

#define FIRSTAPP_BASE ((U16) RESOURCE_BASE_FIRSTAPP)

#define FIRSTAPP                                    FIRSTAPP_BASE

#define FIRSTAPP_BASE_MAX ((U16) RESOURCE_BASE_FIRSTAPP_END)

RESOURCE_BASE_TABLE_ITEM(FIRSTAPP)

 

#endif

 

5,打开plutommi/Customer/CustResource/PLUTO_MMI/ref_list.txt,中间用tab键隔开

在末尾处添加

 STR_ID_FIRSTAPP Undefined 30 FirstApp FirstApp 第一个程序 第一个程序

6,把FirstAppDefs.h内容修改为

    #ifndef _FIRSTAPPDEFS_H

#define _FIRSTAPPDEFS_H

#include "MMI_features.h"

#include "MMIDataType.h"

#include "PixtelDataTypes.h"

 

typedef enum

{

     SCR_FIRSTAPP_MAIN = FIRSTAPP_BASE +1

}SCREENID_LIST_FIRSTAPP;

typedef enum

{

     STR_ID_FIRSTAPP = FIRSTAPP_BASE +1, 

     STR_FIRSTAPP_TOTAL

}STR_ID_FIRSTAPP_ENUM;

#endif

 

7,打开plutommi/Customer/CustResource/PLUTO_MMI/Res_MMI/Res_FirstApp.c源文件,找到void PopulateFirstAppRes(void)

在函数里添加

ADD_APPLICATION_STRING2(STR_ID_FIRSTAPP, "FirstApp", "name of FirstApp");

 

8,修改FirstAppSrc.c,内容变为:

#include "MMI_features.h"

#include "PixtelDataTypes.h"

#include "Unicodexdcl.h"

#include "gdi_include.h"

#include "wgui.h"

#include "gui.h"

#include "MMI_features.h"

#include "PixtelDataTypes.h"

#include "Globaldefs.h"

#include "CustDataRes.h"

#include "wgui_categories.h"

#include "wgui_categories_util.h"

 

#include "wgui_softkeys.h"

#include "HistoryGprot.h"

#include "OrganizerDef.h"

 

#include "FirstAppDefs.h"

#include "FirstAppProt.h"

#include "FirstAppTypes.h"

#include "BootUp.h"

 

#include "SettingProfile.h"

#include "CommonScreens.h"

 

void EntryFirstAppScreen(void)

{

 

EntryNewScreen(SCR_FIRSTAPP_MAIN,ExitFirstAppScreen,NULL,NULL);

entry_full_screen();

clear_screen();

gui_set_text_color(gui_color(255,0,0));

 

gui_move_text_cursor(100,100);

gui_print_text((UI_string_type)GetString(STR_ID_FIRSTAPP));

gui_BLT_double_buffer(0,0,UI_device_width-1,UI_device_height-1);

 

SetKeyHandler(GoBackHistory,KEY_RSK,KEY_EVENT_UP);

}

 

void ExitFirstAppScreen()

{

history currHistory;

currHistory.scrnID = SCR_FIRSTAPP_MAIN;

currHistory.entryFuncPtr = EntryFirstAppScreen;

GetCategoryHistory(currHistory.guiBuffer);

pfnUnicodeStrcpy((S8*)currHistory.inputBuffer,(S8*)L"");

AddHistory(currHistory);

}

 

9,添加菜单

 

整个MMI中用到的菜单ID都位于plutommi/mmi/Inc/GlobalMenuItems.h文件中。

 

(1)ORGANIZER_WORLDCLOCK_MENU后面添加

        #ifdef __MMI_FIRSTAPP__

     ORGANIZER_FIRSTAPP_MENU,

        #endif

(2)打开文件plutommi/Customer/CustResource/PLUTO_MMI/Res_MMI/Res_MainMenu.c.

      找到  #ifdef __MMI_MESSAGES_CLUB__

         ORG_ENUM_SERVICE,

             #endif

       在其后面添加

             #ifdef __MMI_FIRSTAPP__

                ORG_ENUM_FIRSTAPP,

              #endif

      找到 #if defined (__MMI_WORLD_CLOCK__)

ORGANIZER_WORLDCLOCK_MENU,

#endif

       在其后面添加:

            #if defined (__MMI_FIRSTAPP__)

       ORGANIZER_FIRSTAPP_MENU,

#endif

   10PopulateFirstAppRes(void)函数修改为

       void PopulateFirstAppRes(void)

{

ADD_APPLICATION_STRING2(STR_ID_FIRSTAPP, "FirstApp", "name of FirstApp");

ADD_APPLICATION_MENUITEM((ORGANIZER_FIRSTAPP_MENU,

            MAIN_MENU_ORGANIZER_MENUID,

            0,//表明没有下一级菜单

            SHOW,

            SHORTCUTABLE,

            DISP_LIST,

            STR_ID_FIRSTAPP,

            0));

}

ADD_APPLICATION_MENUITEM宏的参数说明:
参数1:新加的菜单ID

参数2,新菜单项的上一级菜单ID,即父菜单;

参数3,此菜单的下一级菜单项的个数,在上述代码示例中,ORG_ENUM_TOTAL表示,这里假设有x个。

参数4到参数4+x-1:分别为每个子菜单的ID

参数4+x:隐藏属性,一般设为可见,即SHOW

参数4+x+1:表示菜单项目的转移属性,可以选择

NONMOVEABLE, MOVEABLEWTIHINPARENT, SHORTCUTABLE

常用的NONMOVEABLE,表示关闭转移属性,目前大部分菜单用这个属性,还有SHORTCUTABLE,表示菜单项将提那家到快捷菜单列表中。

参数4+x+2:下一级菜单显示风格,有如下风格可选:

        DISP_LIST:列表显示。大部分用这个风格

        DISP_MATRIX:矩阵显示。如nokia主菜单的九宫格

        DISP_CIRCULAR_3D:循环3D显示,不常用;

        DISP_PAGE:翻页风格。每个菜单占一项;

        DISP_FIXED_GRID:不常用。

参数4+x+3:此菜单项的显示字符;

最后一个参数:菜单项的小图标。

 

 

 

 

11,系统会在我们上下菜单的时候,对当前高亮项发出一个通知。这样永福就通过单击当前高亮菜单,执行其注册函数的功能,这其实隐含两件事

 (1)由谁来接受高亮通知

 

每个菜单项都要在开机的时候告诉系统将由哪个函数来接受通知,SetHiliteHandler函数就是来实现此功能的原型为,void SetHiliteHandler(U16 itemid, FuncPtr hiliteFuncPtr).

第一个参数是菜单项的ID

第二个参数是用来接受通知的函数指针。

 

  (2)接受通知后的处理

在菜单想接到高亮通知后,其实只需要做一件事情,就是更改左右按键的响应函数,其中最重要的就是左软件,如前面的操作,要将菜单项:ORGANIZER_FIRSTAPP_MENU作为程序的入口菜单,那么就应该将菜单的响应函数设为EntryFirstAppScreen,并将此函数作为实参传入SetHiliteHandler函数。

 

完成这两步以后,新增程序就可以正确接受和处理通知了。

 

FirstAppProt.h文件中增加如下代码:

extern void mmi_firstapp_hilite(void);

extern void mmi_firstapp_init(void);

FirstAppSrc.c中增加以下函数:

void mmi_firstapp_hilite(void)

{

SetLeftSoftkeyFunction(EntryFirstAppScreen,KEY_EVENT_UP);

 

}

 

void mmi_firstapp_init(void)

{

SetHiliteHandler(ORGANIZER_FIRSTAPP_MENU, mmi_firstapp_hilite);

}

 

打开plutommi/mmi/Organizer/OrganizerSrc/Organizer.c

OrgInit(void)函数改为

void OrgInit(void)

{

#if defined(__MMI_CALENDAR__)

    ClndrInit();

#endif 

 

    /* to do list */

 

    /* alarm */

    AlmInit();

 

    /* world clock */

#if defined (__MMI_WORLD_CLOCK__)

    WcInit();

#endif 

 

#if defined(__MMI_FIRSTAPP__)

mmi_firstapp_init();

#endif

}

 

 

12,添加图片,

 

(1),在FirstAppDefs.h添加如下代码

     typedef enum

   {

      IMG_FIRSTAPP = FIRSTAPP_BASE + 1,

}IMAGEID_LIST_FIRSTAPP;

(2)打开plutommi/Customer/Images/PLUTO240X320/MainLCD文件夹,新建FirstApp文件夹,在此文件夹中新增一个小图片,命名为ICON.bmg,将整个MainLCD文件夹打包为image.zip

(3)打开Res_FirstApp.c,整个内容变为:

#include "MMIDataType.h"

#include "CustomCfg.h"

 

#ifdef FIRST_PASS

#include "BuildCfg.h"

#endif

 

#include "MMI_features.h"

#include "ComposeRingToneDefs.h"

#include "FirstAppDefs.h"

 

#ifdef DEVELOPER_BUILD_FIRST_PASS

#include "PopulateRes.h"

 

void PopulateFirstAppRes(void)

{

ADD_APPLICATION_STRING2(STR_ID_FIRSTAPP, "FirstApp", "name of FirstApp");

ADD_APPLICATION_IMAGE2(IMG_FIRSTAPP,CUST_IMG_PATH"MainLCDFirstAppICON.BMP","FIRSTAPP ICON");

 

ADD_APPLICATION_MENUITEM((ORGANIZER_FIRSTAPP_MENU,

            MAIN_MENU_ORGANIZER_MENUID,

            0,

            SHOW,

            SHORTCUTABLE,

            DISP_LIST,

            STR_ID_FIRSTAPP,

            IMG_FIRSTAPP));

 

}

#endif

 

13,打开organizer.c,在函数EntryOrganizer()函数下,找到

     #ifdef __MMI_FIRSTAPP__

将其改为

      #ifndef __MMI_FIRSTAPP__

14,整个工程new一次,然后运行模拟器,就可以看到新添加的程序的菜单入口了

 

 15,假如idle界面显示不正确,则在模拟器上clean mmi_app,然后在build mmi_app,这样就正确了

参考资料:走出山寨mtk芯片开发指南

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值