FlexMusic 是一个以 Android 为主的音频应用工程,当前已经落地的主能力包括:
- 本地与在线统一播放
- 在线搜索、搜索结果播放、加入下一首、加入队列
- 睡眠白噪声 / 氛围音 / 电台
- 音频转码
- 登录、资料编辑、头像上传
- 歌曲收藏 / 歌单 / 歌曲上传
- 歌曲下载
项目仍在持续迭代中,仓库文档以“当前已完成实现”为准,不把规划功能写成已支持。
app/ 应用壳、页面、播放器 UI、睡眠 UI、轻量存储
feature_player/ Java PlayerKernel 与 JNI 桥接
feature_search/ 搜索页 UI 与播放协作
feature_transcode/ Java 侧转码编排与 JNI 调用
feature_download/ 预留模块壳,当前未完成
core_domain/ 领域模型、抽象接口、use case
core_data/ 业务编排、仓储、缓存、历史、会话管理
core_network/ 搜索 provider、播放解析、在线流与 Supabase 接入
core_database/ 预留模块壳,当前未完成
native/ 播放与转码 native 实现
doc/ 架构与功能说明
- 迷你播放器 + 全屏播放器
- 播放队列
- 顺序 / 随机 / 单曲循环 / 单曲循环次数
- 倍速
- seek
- 最近播放记录
- 本地源与在线源统一接入 native 播放链路
- 多 scope 搜索
- 搜索建议、历史记录、热搜入口
- 搜索结果分页
- 直接播放、播放全部、加入下一首、加入队列
- 当前默认 provider 为
Jamendo
- 默认白噪声 / 氛围音
- 本地缓存后离线复用
- 电台精选与关键词搜索
- 定时关闭与 30 秒淡出
- 单文件转码
MP3 / FLAC / OGG / WAV输出入口- 输出自动导入本地音乐库
- 邮箱注册
- 邮箱或用户名登录
- 会话恢复
- 头像上传
- 资料编辑
架构图位于:
doc/architecture/flexmusic_arch_overview.svgdoc/architecture/flexmusic_native_internals.svg
core_network 当前会读取:
jamendo.clientIdjamendoClientIdJAMENDO_CLIENT_ID
supabase.urlsupabase.publishableKeysupabaseUrlsupabasePublishableKeySUPABASE_URLSUPABASE_PUBLISHABLE_KEY
release.storeFilerelease.storePasswordrelease.keyAliasrelease.keyPassword
推荐都放在本地 local.properties,不要提交到仓库。
- 搜索仍是单 provider
- 还没有后台播放通知 / 锁屏控制
- 转码还没有任务队列和历史列表