v4.3.1
ColorOS Live Lyrics Bridge v4.3.1
简体中文
媒体卡控制按钮错位修复(QQ 音乐)
修复 QQ 音乐媒体卡控制按钮顺序错乱(现场表现为 下一首 / 翻译 / 上一首 / 暂停)。根因是
Bridge 为了让翻译按钮出现在收藏槽,把 QQ 的 OPlus action rule 强制到 Rule0 并重新下发规则表,
SystemUI 因此改用语义动作模板重拼整行;关闭播放器的翻译按钮设置也不能阻止该改写。
v4.3.1 对这类播放器保留系统原生 action row,不再改写规则表:QQ 的按钮顺序恢复,翻译按钮
仍通过收藏槽原地替换呈现(锁屏界面已真机确认)。其它播放器行为不变。
翻译按钮接入:合成动作兜底
对既不暴露 PlaybackState.CustomAction、也没有 OPlus heart 动作的播放器,Bridge 现在会合成
一个与 framework 同类型的 SystemUI MediaAction 注入 Rule0 自定义动作列表,并同步置位
hasCustomAction;按钮点击仍在 Bridge 内处理,不依赖播放器配合。
歌词时钟平滑
播放中媒体会话若重新发布一个略有差异的位置(部分播放器按 400 ms 粒度上报),Bridge 不再
把它当作跳变或回退:小于 600 ms 的正负偏差按本地时钟修正处理,状态切换与大幅跳变仍以宿主
发布值为准,避免歌词前沿被微小抖动带偏。
Provider:KuWo 1.2.0 (3) 只追加 lyricInfo
KuWo Provider 现在只往宿主自己的 MediaMetadata bundle 写入 lyricInfo 一个键:不再重建
metadata、不再改写任何封面通道,并删除了此前的联网补封面与 240px 重绘策略。ColorOS 的封面
取用顺序(loadBitmapFromUri → ART → ALBUM_ART)与 Bitmap 实例完全保持宿主原样。
真机验证(酷我 12.2.0.0):metadata 由 9 键变为 10 键,ALBUM_ART 保持 360x360
ARGB_8888 varied,SystemUI 正常 NATIVE_LYRIC_RECEIVED,锁屏封面与歌词同时正确。
其余 13 个 Provider 在本版本中不改变行为。
兼容矩阵与升级
- Bridge 仍只作用于
system与com.android.systemui,不进入播放器进程,不恢复私有歌词传输。 - 14 个 Provider 仍为 libxposed API 102 矩阵;KuWo 模块版本 1.2.0(versionCode 3),其余模块版本不变。
- 升级:从同一 v4.3.1 Release 安装 Bridge 与所需 Provider APK;更新 Bridge 或变更 scope 后重启
SystemUI,更新 Provider 后重启对应播放器。
验证与已知限制
- 本地门禁覆盖 Bridge 单测、debug/release lint、debug 构建、发布契约校验与 14-Provider Debug 矩阵。
- tag workflow 生成正式签名资产,校验包名/版本、证书、zipalign 与 DEX guards,将 Provider
main
冻结到完整 commit,并从同一验证批次发布 Bridge 与 LSP mirror。 - 兼容性仍取决于厂商 SystemUI 实现与播放器经 MediaSession 暴露的歌词时间信息。
- 微小时钟修正阈值(600 ms)为固定值;超出该范围的位置变化仍按宿主处理。
资产
正式 Release 包含 18 项已验证资产:1 个 Bridge APK、14 个 Provider APK、1 个 Provider ZIP、
release-assets-v4.3.1.json 与 SHA256SUMS。Provider ZIP 只包含 14 个顶层 Provider APK。
ColorOS 17 适配计划
ColorOS 17 的 nolog 版本封锁 bootloader,无法解锁并建立模块运行环境,因此本项目不会跟进
nolog 分支的更新与适配;同时主力机型一加 13 也尚未收到 ColorOS 17 nolog 版本,缺少可验证的
设备条件。因此 ColorOS 17 适配将在 ColorOS 17 正式版发布之后再启动:届时先在正式版上核对
SystemUI 媒体/歌词实现与权限面差异,再给出 Bridge 与 Provider 的适配版本。在此之前,现有
ColorOS 16 版本继续接收 bug 修复。
致谢
感谢 Salt Player 提供字符上浮阶跃模型的视觉参考,也感谢 Lyrico 与 Lyrico-Plugins 在本地音乐
元数据、歌词管理和插件化歌词源上的开源工作与启发。
English
Media card control row fix (QQ Music)
Fixes the mis-ordered QQ Music media-card control row (observed as next / translate / previous /
pause). The Bridge used to force the player's OPlus action rule to Rule0 and re-dispatch the rule
table so the translation toggle could occupy the favorite slot; SystemUI then recomposed the whole
row from the semantic-action template, and disabling the player's translation button did not stop
that rewrite.
v4.3.1 keeps the native action row for such players and no longer rewrites the rule table: QQ's
button order is restored while the translation toggle still replaces the favorite slot in place
(confirmed on device in the lockscreen card). Other players are unaffected.
Translation toggle: synthetic action fallback
For players that expose neither a PlaybackState.CustomAction nor an OPlus heart action, the Bridge
now synthesizes a SystemUI MediaAction of the same type the framework uses, injects it into the
Rule0 custom-action list and sets hasCustomAction. The click is handled entirely inside the
Bridge and needs no player cooperation.
Lyric clock smoothing
When a media session re-publishes a slightly different position while playing (some players report
in 400 ms steps), the Bridge no longer treats it as a jump or rewind: deviations below 600 ms are
handled as local clock corrections, while state changes and large jumps stay authoritative.
Provider: KuWo 1.2.0 (3) appends only lyricInfo
The KuWo Provider now writes exactly one key — lyricInfo — into the host's own
MediaMetadata bundle. It no longer rebuilds metadata and no longer touches any artwork lane;
the former network cover completion and 240 px redraw policy were removed. ColorOS's artwork order
(loadBitmapFromUri → ART → ALBUM_ART) and the Bitmap instances stay exactly as the host
published them.
Device validation (KuWo 12.2.0.0): metadata grew from 9 to 10 keys, ALBUM_ART stayed
360x360 ARGB_8888 varied, SystemUI reported NATIVE_LYRIC_RECEIVED and the lockscreen showed the
real cover together with the lyrics. The other 13 Providers are unchanged in this release.
Compatibility and upgrade
- The Bridge still scopes only
systemandcom.android.systemui; it never enters player processes
and does not restore any private lyric transport. - All 14 Providers remain on the libxposed API 102 matrix; the KuWo module is 1.2.0 (versionCode 3),
the other modules keep their versions. - Upgrade: install the Bridge and the needed Provider APKs from the same v4.3.1 Release; restart
SystemUI after a Bridge update or scope change, and restart the player after a Provider update.
Validation and known limitations
- Local gates cover Bridge unit tests, debug/release lint, debug build, release contract validation
and the 14-Provider debug matrix. - The tag workflow builds the signed assets, verifies package/version, certificate, zipalign and DEX
guards, freezes the Providermainto a full commit, and publishes the Bridge and LSP mirror from
the same verified batch. - Compatibility still depends on the OEM SystemUI implementation and on the lyric timing a player
exposes through its MediaSession. - The small-correction threshold (600 ms) is a fixed constant; larger position changes stay
authoritative.
Assets
The release contains 18 verified assets: one Bridge APK, 14 Provider APKs, one Provider ZIP,
release-assets-v4.3.1.json and SHA256SUMS. The Provider ZIP contains the 14 top-level Provider
APKs only.
ColorOS 17 adaptation plan
ColorOS 17 nolog builds lock the bootloader, so the module runtime environment cannot be unlocked or
set up; this project will therefore not follow the nolog branch. In addition, the primary test device
(OnePlus 13) has not received a ColorOS 17 nolog build, so there is no device to validate against.
ColorOS 17 support will start after the official ColorOS 17 release: we will first compare the
SystemUI media/lyric implementation and permission surface on the official build, then publish
Bridge and Provider updates. Until then the current ColorOS 16 line keeps receiving bug fixes.
Credits
Thanks to Salt Player for the visual reference of the character lift step model, and to Lyrico and
Lyrico-Plugins for their open-source work on local music metadata, lyric management and pluggable
lyric sources.
