同步操作将从 奥大梨呀/minipad 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
本项目为Linux下的各个应用程序开发,基于全志T113-S3,运行TinaLinux系统,UI部分基于lvgl开发。此仓库仅记录应用程序开发,不包括硬件、系统以及驱动部分。益于lvgl的可移植性,部分程序甚至可以只修改lvgl的底层驱动(如sdl)后直接在PC端上运行。
应用程序之间采用多进程开发模式,从运行时的进程父子关系来看,主页面(main_page)为父进程,其余应用程序均为其创建的子进程。由于采用了多进程的开发模式,因此每个应用程序可以独立编译和运行。 应用程序内部采用多线程开发模式,长时间运行来看为UI线程和处理线程,短时间内可能存在一些其他线程,如音视频解码线程等。
应用程序采用C/C++混合编程,C语言主要处理UI部分,C++主要处理数据和交互部分。 每个程序的都存在有xxx_gui.c和xxx.cpp,前者包含应用程序的UI部分,后者包含应用程序的处理部分。
加载驱动以及运行一些后台程序,采用读取外部json配置文件的方式安装应用程序,添加其他应用程序后不必重新编译主页面,只需要在配置文件中添加该应用程序的配置,包括执行文件名,图标和名称,在开机时会自动解析并安装。同时还附带天气获取功能,使用心知天气V3 API。
用于设置一些系统的参数,包括屏幕亮度,系统音量。还用于网络信息的获取与设置,包括无线网卡的信息和wifi热点的连接。修改其他应用程序的配置文件。
遍历某个目录下的图片,包括bmp,jpg/jpeg和png格式的图片,在列表显示缩略图,点击缩略图后可以全屏显示,暂时不支持缩放功能,后续考虑添加。
用来查看电脑的各个资源信息,通过socket与电脑进行TCP通信获取,服务端为AIDA64的LCD项目功能。此应用程序的主要为不同UI主题的设计和开发,电脑资源数据就那些,关键是如何使用UI显示这些数据。为了后续方便开发和添加不同的UI主题,因此,在UI部分,抽象出了"主题"这个概念,每个主题对外只需要提供初始化(init)、数据更新(update)和删除(release)三个函数,在pc_resource_gui.c中统一注册。
遍历某个目录下的音乐,目前仅支持wav与mp3格式的音乐播放,wav直接读取文件播放,mp3采用libmad解码,但不管是何种文件,最终都抽象成一个MusicObj类,方便上层调用。歌词使用lrc格式,使用C语言解析,歌词显示使用lvgl的roller小工具实现。
与音乐播放器有很多异曲同工之处,都是遍历视频文件,然后解码播放。视频的解码部分基于Tina的tplayer开发,使用硬件解码,CPU占用率非常低。
代码中可能使用到的字体、背景图片等资源位于res目录下
2024.04.18: 字体去全部采用FreeType渲染的TTF字体;UI与应用的回调函数全部修改成STL库的function模板,便于参数绑定;配置文件统一使用json描述,并使用cJSON解析与修改;视频应用程序实现UI与视频层的半透明叠加。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。