为 Xiaomi MIX Flip / MIX Flip 2 设计的外屏音乐增强模块,基于 libxposed API 102。
模块包名:vip.chener.musicenhance。LSPosed 模块仓库的提交信息、分发版说明和发布说明模板见 提交指南。
在外屏打开已适配音乐应用的播放页,即可使用统一的全屏播放器:专辑背景、低频律动、滚动歌词,以及避开摄像头的播放控件。各应用继续负责歌曲播放和数据提供,模块设置页采用 Miuix 风格。
下载版本 · 反馈问题 · 安装与启用 · 构建与签名 · 自动发布
- 全屏专辑背景:从屏幕中部向歌曲信息区域逐渐加深模糊,支持高清封面与缺图兜底。
- 摄像头区域布局:黑色区域避让摄像头,控件随正反方向调整,支持整页 180° 翻转动画。
- 频谱律动:使用独立的公共频谱模块,各应用共用多频带 spectral-flux 分析、起音门限和回落策略,在后台识别低音、鼓点及人声中高频起音;
AudioTrack路径按实际播放时钟驱动,各音轨独立分析,使用封面主色,暂停后平滑回落。 - 播放控制:播放/暂停、上下首、拖动进度、循环模式和喜欢状态。循环按钮直接切换宿主支持的模式。
- 独立增强页面:进入时从下向上滑入,退出时向下滑出,背景显示宿主首页;常规入口在原生播放页创建或展开前转入增强页,共用全屏及外屏小组件显隐策略,退出后恢复原生首页布局,返回按钮与新旧系统返回事件共用关闭流程。
- 外屏常亮:可在设置中开启,默认关闭;仅在增强播放器前台生效,歌词页同样适用,仍可手动锁屏。
- 按应用启用:每款音乐应用都有独立 Hook 开关,内屏保留原生界面。
- 后台播放通信:各应用共用按增强页可见状态订阅的进程通信。歌曲状态合并发送,封面通过宿主缓存文件传递;状态和频谱分别等待接收确认,页面退出或订阅超时后停止向其发送,避免后台广播堆积。
- 点击封面页的非功能区域进入歌词页,背景切换为更深的整屏模糊。
- 歌曲信息移至返回键旁,黑色侧栏平滑延伸,显示喜欢、播放/暂停和专辑缩略图。
- 歌词跟随播放进度逐行上移,带错峰弹簧动画。
- 默认歌词为半透明灰色,当前句整句渐变为白色;距离当前句越远,上下两侧模糊越深。
- 手动滚动时平滑取消模糊,并显示选中句的开始时间;停止操作一段时间后恢复跟随。
- 点击歌词文字跳转到该句并播放;点击空白区域或专辑缩略图返回封面页。
| 项目 | 要求 |
|---|---|
| 设备 | Xiaomi MIX Flip(ruyi)、Xiaomi MIX Flip 2(bixi) |
| 系统 | 小米 HyperOS,Android 14(API 34)及以上 |
| 框架 | 已安装并正常运行、支持现代 libxposed API 102 的 LSPosed 环境 |
| 使用位置 | 外屏音乐播放页 |
最低 Android 版本仅代表安装要求;外屏布局依赖小米系统实现。现有真机验证主要来自 MIX Flip 2,其他 HyperOS 版本和 MIX Flip 一代仍需结合实际设备验证。
下表为当前适配所依据的应用版本。应用更新后会尝试按特征重新定位接口;是否能恢复各项能力取决于特征与协议是否仍然有效。
| 应用 | 适配版本 | 包名 |
|---|---|---|
| QQ 音乐 | 自动适配接口(beta) | com.tencent.qqmusic |
| Apple Music | 6.5.2 | com.apple.android.music |
| 酷我音乐 | 12.2.2.4 | cn.kuwo.player |
| 酷狗概念版 | 5.2.9 | com.kugou.android.lite |
| 酷狗音乐(普通版) | 20.8.2 / 20.8.4 | com.kugou.android |
| 椒盐音乐 | 自动适配接口(beta),已核对 12.3.2 / 12.4.0 / 12.4.1 官方版 | com.salt.music |
| LX-X Music | 26.09.20(待真机验证) | com.lxwalnut.music.mobile |
| Spotify | 9.1.90.2270(待真机验证) | com.spotify.music |
- 从 Releases 下载并安装 APK。标记为 Pre-release 的版本为 Beta 测试版。
- 在 LSPosed 中启用「音乐外屏增强」,确认模块的静态作用域已加载。
- 打开模块设置的「功能」页,开启需要使用的音乐应用;按需开启「播放器外屏常亮」。
- 首次启用,或更新涉及系统全屏、旋转及作用域规则时,重启手机。
- 在外屏打开已启用的音乐应用,进入其播放页。
| 作用域 | 用途 |
|---|---|
系统框架(system) |
外屏全屏布局及小组件显隐策略 |
系统界面(com.android.systemui) |
外屏正反方向旋转动画 |
| 上表中的音乐应用 | 播放入口、歌曲数据与控制适配 |
无需添加外屏桌面作用域。模块采用静态作用域,应用名单由安装包提供,不能通过手动勾选给旧版本增加新适配。
仅修改应用 Hook 开关,或更新应用侧适配代码后,需要强行停止并重新打开对应音乐应用。模块设置页只用于配置,不提供独立播放或预览入口。
确认设备、框架和音乐应用版本符合支持范围,并检查模块激活状态及该应用的 Hook 开关。强行停止并重新打开音乐应用;首次启用或更新系统侧规则后需重启手机。增强界面在外屏播放页触发,音乐应用首页和内屏保持原生显示。
先安装最新版本并重新启动对应音乐应用。系统窗口策略有更新时需重启手机。反馈时请注明:点击返回按钮还是使用返回手势、进入前的屏幕方向、是否从内屏切到外屏,以及使用的音乐应用。
高清请求不能提高源图片本身的质量。部分歌曲没有有效专辑图,QQ 音乐会尝试歌手图;其他应用按各自策略使用较小尺寸或原生图片。预缓存只覆盖邻近队列,首次加载、缓存被清理或网络较慢时仍可能等待。
歌词依赖宿主提供的逐句时间轴;只有纯文本歌词或原生没有歌词时,无法自动滚动。喜欢操作依赖宿主返回当前歌曲状态,并保留宿主的登录和收藏限制。椒盐和 LX-X 的喜欢图标仅作固定显示,酷狗概念版 AI 歌曲暂不支持收藏适配。
本次包名迁移后,Android 会将 vip.chener.musicenhance 视为独立应用,无法覆盖旧包名版本,配置也不会自动迁移。请先记录旧配置,在 LSPosed 中停用旧模块,再安装并启用新模块、重新配置音乐应用开关;确认新模块可用后可卸载旧模块。不要同时启用两份模块。完成切换后重启手机,使系统框架和 System UI 加载新模块。
同包名版本覆盖安装时,新旧 APK 必须使用相同签名证书。Debug 包、自行签名包与已安装的发布包可能使用不同证书;需要更换签名时,先记录模块配置,再卸载旧模块、安装并重新启用。
请在 Issues 中提供:
- 设备型号、Android / HyperOS 版本。
- 模块版本、音乐应用名称与完整版本号。
- 复现步骤、预期结果和实际结果。
- 与问题相关的截图或录像;旋转问题注明正反方向及内外屏切换过程。
- 复现后的 LSPosed 日志,模块日志标签为
MusicEnhance。 - 封面或歌词问题对应的歌曲名、歌手和具体录音版本。
分享日志前请检查其中是否包含个人信息。
开发约定见 AGENTS.md。应用私有接口集中在适配层,通用播放器负责展示、交互和生命周期。
| 位置 | 内容 |
|---|---|
| adapter | 应用注册及 qq、apple、kuwo、kugou、kugoulite、salt、lxx 适配 |
| player | 通用 Activity、会话、控制器和数据接口 |
| player/ui | 播放器、歌词与控件展示 |
| player/lyrics | 歌词提供器与交互逻辑 |
| player/artwork | 封面下载、缓存、预取及过渡 |
| player/audio | 公共音频采样、频谱分析及播放时间轴;不依赖音乐应用的私有接口 |
| device | 外屏识别、摄像头定位和布局 |
| hook | 模块入口、宿主 Hook、Activity 路由及系统窗口策略 |
| .github | 自动构建与发布脚本 |
接入新播放器时:
- 添加
<应用>PlayerProfile和<应用>PlayerAdapter,通过现有注册机制接入。 - 在应用适配目录实现播放入口、原生页面退出、歌曲状态、歌词、封面与控制接口。
- 通过
createSession()注入数据和操作;缺失能力返回未知或不支持。 - 更新静态作用域及 Manifest 查询配置。
- 验证冷启动、快速切歌、暂停后歌词定位、返回、正反旋转、内外屏切换及小组件恢复。
耗时工作放到后台,异步结果校验歌曲身份;动画、监听、任务和提供器须有对应的取消或释放路径。仅添加包名和作用域不代表完成适配。