Rockchip MiniGUI Desktop开发指南

Rockchip MiniGUI Desktop开发指南

前言

概述

本文档主要介绍MiniGUI Desktop的功能、常用的接口和内部工作原理,通过实例介绍MiniGUI Desktop的开发过程以及注意事项。

目录

MiniGUI Desktop

概述

MiniGUI是一款面向嵌入式系统的高级窗口系统和图形用户界面支持系统,目前我们在MiniGUI的基础上编写了MiniGUI Desktop,用以实现音频播放、视频播放、图片浏览等功能,支持按键或触屏控制,便于二次开发。

功能描述

文件浏览

表 1‑1支持的文件类型

文件类型文件格式
图片jpg、bmp、png
音频wav、mp3
视频mp4

文件浏览均由browser_dialog窗体处理,通过判断文件后缀名创建对应的音频播放窗体、视频播放窗体或图片预览窗体。

在音频、视频播放窗体中,支持播放/暂停、上一曲/下一曲以及快进退。

在图片预览窗体中,支持上一张/下一张以及双击屏幕退出。

系统设置

图 1‑1系统设置层级关系

在这里插入图片描述

**通用设置:**支持中文、英文、日文、韩文四种语言设置;支持音量设置;支持两种主题风格,可根据需求再拓展;可设置5、10、15、30、60s关屏或常亮;可设置四个等级背光亮度。

**WiFi 设置:**可打开或关闭WiFi;显示附近热点信息,上下滑动可翻页,点击可进入密码输入界面。

**Airkiss:**暂不支持。

**系统时间:**可选用NTP对时;开启自动对时后日期设置、时间设置项无效;点击日期设置、时间设置、定时开关机可进入对应的输入界面,点击确定后会将对应时间日期写入系统,并同步到RTC;可设置12/24小时制显示。

**恢复默认设置:**将系统设置恢复为默认值。

**系统信息:**显示模组型号;显示固件版本号;点击系统升级会判断是否有固件可更新。

编译配置

板级配置:

在根目录运行make menuconfig找到如下项并使能:

BR2_PACKAGE_MINIGUI=y
BR2_PACKAGE_MINIGUI_ENABLE_FREETYPE=y
BR2_PACKAGE_MINIGUI_ENABLE_PNG=y
BR2_PACKAGE_MINIGUI_DESKTOP=y

可选配置:

其中FFMPEG和SDL2用于支持音视频播放,NTP用于支持网络对时。

BR2_PACKAGE_FFMPEG_FFPLAY=y
BR2_PACKAGE_SDL2_KMSDRM=y
BR2_PACKAGE_SDL2_OPENGLES=y
BR2_PACKAGE_NTP=y
BR2_PACKAGE_NTP_NTPDATE=y
BR2_PACKAGE_NTP_NTPTIME=y

minigui_desktop编译配置:

编辑external/minigui_desktop/config.mk,修改如下项可开启或关闭电池、WiFi编译,用于适配部分板子可能没有电池或不支持WiFi。可参考Makefile和config.mk添加其他编译开关。

ENABLE_WIFI=1
ENABLE_BATT=1

开发指引

创建窗体

函数DialogBoxIndirectParam用于创建窗体并设置对应的事件处理函数,一般情况下,每个窗体都有单独的dialog文件,例如audioplay_dialog.c,每个窗体都有自己的创建函数和事件处理函数,以audioplay_dialog为例,其创建窗体的函数为creat_audioplay_dialog,主要工作为指定窗体的位置以及一些参数的传递和初始化,最后调用DialogBoxIndirectParam创建窗体。

窗体事件处理

在创建一个窗体时,会绑定对应事件处理函数,以audioplay_dialog.c为例,其处理函数为audioplay_dialog_proc,系统触发某一事件后,就会上发至该函数进行处理。常用事件如下:

表 1‑2窗体事件

事件名描述
MSG_INITDIALOG初始化事件,窗体被创建时触发
MSG_TIMER定时器事件,可在初始化事件中创建定时器,则系统会定时触发该事件,可根据wParam(ID)判断是哪个定时器触发
MSG_KEYDOWN按键事件,可通过wParam判断是哪个按键已按下
MSG_DISPLAY_CHANGED判断图形输出设备是否改变,例如插拔HDMI会触发该事件
MSG_PAINT绘图事件,函数InvalidateRect会触发该事件,进行画面重绘,可指定重绘区域,降低不必要的开销
MSG_MEDIA_UPDATE媒体播放更新事件,由播放器上发,例如获取媒体总时间、当前播放时间、通知播放结束等
MSG_DESTROY销毁事件,窗体完全退出时触发,执行反初始化函数
MSG_LBUTTONDOWN鼠标左键是否按下/手指是否接触触屏判断
MSG_LBUTTONUP鼠标左键是否松开/手指是否离开触屏判断

注:更多事件的触发和处理可参考MiniGUI官方文档说明。

控件的绘制和按下判断

按钮等控件的绘制本质上是绘制图片,使用FillBox、FillBoxWithBitmap、DrawText等函数实现,按下判断则是在触发MSG_LBUTTONDOWN、MSG_LBUTTONUP事件后记录对应的坐标,调用各个窗体的check_button函数去判断是哪个控件被触发,从而执行对应的操作。

绘制时的坐标等参数由ui_1024x600.h、ui_480x272.h、ui_480_320.h分别指定对应分辨率下的数值,目前ui_1024x600.h中的支持较完善,另外两种分辨率,或其他分辨率的头文件还需要进行适配。在common.h中通过#include的方式指定使用哪个分辨率的头文件。

常见问题

请参考常见问题FAQs:https://github.com/VincentWei/minigui/wiki/FAQs-in-Chinese

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值