1 Star 1 Fork 35

卖菇凉小蘑菇 / minipad

forked from 奥大梨呀 / minipad 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.md 3.45 KB
一键复制 编辑 原始数据 按行查看 历史
奥大梨呀 提交于 2024-04-18 10:49 . 发布V2版本

minipad

项目介绍

本项目为Linux下的各个应用程序开发,基于全志T113-S3,运行TinaLinux系统,UI部分基于lvgl开发。此仓库仅记录应用程序开发,不包括硬件、系统以及驱动部分。益于lvgl的可移植性,部分程序甚至可以只修改lvgl的底层驱动(如sdl)后直接在PC端上运行。

软件架构

1. 应用程序开发模式

应用程序之间采用多进程开发模式,从运行时的进程父子关系来看,主页面(main_page)为父进程,其余应用程序均为其创建的子进程。由于采用了多进程的开发模式,因此每个应用程序可以独立编译和运行。 应用程序内部采用多线程开发模式,长时间运行来看为UI线程和处理线程,短时间内可能存在一些其他线程,如音视频解码线程等。

2. 应用程序源码结构

应用程序采用C/C++混合编程,C语言主要处理UI部分,C++主要处理数据和交互部分。 每个程序的都存在有xxx_gui.c和xxx.cpp,前者包含应用程序的UI部分,后者包含应用程序的处理部分。

各个应用程序简介

1. 主页面(main_page)

加载驱动以及运行一些后台程序,采用读取外部json配置文件的方式安装应用程序,添加其他应用程序后不必重新编译主页面,只需要在配置文件中添加该应用程序的配置,包括执行文件名,图标和名称,在开机时会自动解析并安装。同时还附带天气获取功能,使用心知天气V3 API。

2. 设置(setting)

用于设置一些系统的参数,包括屏幕亮度,系统音量。还用于网络信息的获取与设置,包括无线网卡的信息和wifi热点的连接。修改其他应用程序的配置文件。

3. 图片(picture)

遍历某个目录下的图片,包括bmp,jpg/jpeg和png格式的图片,在列表显示缩略图,点击缩略图后可以全屏显示,暂时不支持缩放功能,后续考虑添加。

4. 电脑资源监控(pc_resource)

用来查看电脑的各个资源信息,通过socket与电脑进行TCP通信获取,服务端为AIDA64的LCD项目功能。此应用程序的主要为不同UI主题的设计和开发,电脑资源数据就那些,关键是如何使用UI显示这些数据。为了后续方便开发和添加不同的UI主题,因此,在UI部分,抽象出了"主题"这个概念,每个主题对外只需要提供初始化(init)、数据更新(update)和删除(release)三个函数,在pc_resource_gui.c中统一注册。

5. 音乐播放器(music)

遍历某个目录下的音乐,目前仅支持wav与mp3格式的音乐播放,wav直接读取文件播放,mp3采用libmad解码,但不管是何种文件,最终都抽象成一个MusicObj类,方便上层调用。歌词使用lrc格式,使用C语言解析,歌词显示使用lvgl的roller小工具实现。

6. 视频播放器(video)

与音乐播放器有很多异曲同工之处,都是遍历视频文件,然后解码播放。视频的解码部分基于Tina的tplayer开发,使用硬件解码,CPU占用率非常低。

使用到的资源文件

代码中可能使用到的字体、背景图片等资源位于res目录下

更新说明

2024.04.18: 字体去全部采用FreeType渲染的TTF字体;UI与应用的回调函数全部修改成STL库的function模板,便于参数绑定;配置文件统一使用json描述,并使用cJSON解析与修改;视频应用程序实现UI与视频层的半透明叠加。

1
https://gitee.com/qq1847123212/minipad.git
git@gitee.com:qq1847123212/minipad.git
qq1847123212
minipad
minipad
master

搜索帮助