OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4735|回复: 1

疯壳-MTK智能穿戴入门篇-编程之新增APP

[复制链接]

98

主题

124

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
437
金钱
437
注册时间
2017-2-27
在线时间
53 小时
发表于 2021-2-2 11:34:20 | 显示全部楼层 |阅读模式
目录
一、MTK开发环境搭建        3
二、MTK平台框架        6
三、MTK编译指令        11
四、MTK编程入门        11
五、资源        12
六、新增APP        22
MTK编程——新增APP
        MTK 系统中,所有的功能都是模块化管理,并且大多数功能都有自己的功能宏,和对应的源代码文件,我们把这种功能模块称之为应用,简称APPApplication),比如闹钟、计算器、日历等都是一个APP。在之前的例子中我们把自己的代码写在了IdleCommon.c 文件中,这个文件属于待机功能模块。很显然我们把代码写在这个文件里面是不科学的,接下来我们就添加自己的功能模块,并建立自己的源文件和资源文件。
1、 首先我们对平台做一些修改,在make\FengKe2502C_WT_11C_GPRS.mak文件中定义一个平台代码公共宏__PLATFORM_PUBLIC__,把我们对平台修改的代码全部用这个宏包含。代码如下:

2、 plutommi\mmi文件夹下新建一个文件夹,命名为CustomerApp,后面我们把自己开发的所有功能模块都放在这个文件夹下面。并创建CustomerApp\HelloMTK\SrcCustomerApp\HelloMTK\IncCustomerApp\HelloMTK\Res目录。在以上三个目录中分别新建HelloMTK.cHelloMTK.hHelloMTK.res三个文件。如下图所示:

3、 plutommi\mmi\Inc 目录下新建MMI_features_switch_custom_app.h文件。在后面的开发中,这个文件专门用于添加我们自己的APP功能宏,把这个文件包含到plutommi\Customer\CustResource\FengKe2502C_WT_11C_MMI\MMI_features_switchFengKe2502C_WT_11C.h文件中,MMI_features_switchFengKe2502C_WT_11C.h代码如下:


4、 MMI_features_switch_custom_app.h文件中定义宏开关,代码如下:

MMI_features.h文件末尾定义宏。代码如下:


5、 make\plutommi\mmi_app\mmi_app.mak文件末尾加载源文件和头文件,添加代码如下:

6、 plutommi\mmi\Inc\Mmi_pluto_res_range_def.h文件末尾加载资源文件,添加代码如下:

7、 最后,把我们添加在 idle.resMainMenuRes.res中的资源移到HelloMTK.res中,把idlecommon.c中的源码移到HelloMTK.c文件中。代码如下:
HelloMTK.c 文件
#include "MMI_features.h"
#if defined(__MMI_HELLO_MTK__)
#include "HelloMTK.h"
#include "GlobalResDef.h"
#include "Mmi_frm_gprot.h"
#include "Gui_themes.h"

void mmi_my_mtk_func_exit(void)
{
}

void mmi_my_mtk_func(void)
{
    mmi_frm_scrn_enter(GRP_ID_ROOT, SCR_ID_MY_MTK_FUNC, mmi_my_mtk_func_exit,mmi_my_mtk_func,MMI_FRM_FULL_SCRN);

    gui_set_text_color(UI_COLOR_WHITE);/*设置字符打印颜色*/

    gdi_image_draw_id(0, 0, IMG_ID_HELLO_MTK);/*显示图片*/

    gui_move_text_cursor(10, 15);/*设置字符打印坐标*/

    gui_set_font(&MMI_medium_font);/*设置字符显示的字体*/

    gui_print_text((UI_string_type)GetString(STR_ID_HELLO_MTK));/*打印字符*/

    /*刷新屏幕*/
    gui_BLT_double_buffer(0, 0, UI_DEVICE_WIDTH,UI_DEVICE_HEIGHT);

    /*注册右软键事件*/
    SetKeyHandler(mmi_frm_scrn_close_active_id, KEY_RSK, KEY_EVENT_UP);
}

void mmi_highlight_my_mtk(void)
{
    SetLeftSoftkeyFunction(mmi_my_mtk_func, KEY_EVENT_UP);
    SetKeyHandler(mmi_frm_scrn_close_active_id, KEY_RSK, KEY_EVENT_UP);
}
#endif

HelloMTK.h 文件
#ifndef __HELLOMTK_H__
#define __HELLOMTK_H__

#include "MMI_features.h"

#if defined(__MMI_HELLO_MTK__)
#include "mmi_rp_app_hellomtk_def.h"

extern void mmi_my_mtk_func_exit(void);
extern void mmi_my_mtk_func(void);
extern void mmi_highlight_my_mtk(void);

#endif
#endif /*__HELLOMTK_H__*/

HelloMTK.res 文件
#include "mmi_features.h"
#include "custresdef.h"

#if defined(__MMI_HELLO_MTK__)

<?xml version="1.0" encoding="UTF-8"?>

<APP id="APP_HELLOMTK">

    <!--Include Area-->
    <INCLUDE file="GlobalResDef.h,SettingResDef.h"/>

    <!-----------------------------------------------------String Resource Area----------------------------------------------------->
    <STRING id="STR_ID_HELLO_MTK">"Hello MTK !"</STRING>

    <!-----------------------------------------------------Image Resource Area------------------------------------------------------>
    <IMAGE id="IMG_ID_HELLO_MTK">CUST_IMG_PATH"\\\\MainLCD\\\\IdleScreen\\\\Wallpaper\\\\WALL01.jpg"</IMAGE>

    <!------------------------------------------------------Menu Resource Area------------------------------------------------------>
    /*添加菜单ID*/
    <MENU id="MENU_MY_MTK_ID" type="APP_MAIN" str="STR_ID_HELLO_MTK" img="IMG_GLOBAL_OK" highlight="mmi_highlight_my_mtk"/>

    <!------------------------------------------------------Timer Resource Area------------------------------------------------------>


    <!------------------------------------------------------SCREEN Resource---------------------------------------------------------->
    <SCREEN id="SCR_ID_MY_MTK_FUNC"/>

</APP>
#endif
                最后依次执行make newmake  gen_modis,重新运行模拟器,运行结果虽然没变,但我们把代码模块化了,方便以后的维护、移植。这只是一个很小的例子,如果是一个上万行代码的应用,这种方式就能体现出极大的优势。另外audio.zipimages.zip中的资源文件我们也可以建立文件夹单独列出来管理,请读者自己尝试,在后面的app实例开发中我们会采用这种方法。









(6)MTK 编程之新增APP.pdf

423.55 KB, 下载次数: 0

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

98

主题

124

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
437
金钱
437
注册时间
2017-2-27
在线时间
53 小时
 楼主| 发表于 2021-2-2 11:35:43 | 显示全部楼层
有任何技术上的问题、或者想学习,欢迎加入技术交流群qq群457686268
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 03:18

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表