Repository navigation
v4.4.0
ColorOS Live Lyrics Bridge v4.4.0
简体中文
Provider:lyricInfo 只追加,封面与原生一致
- LX、Poweramp、Apple Music、Metrolist、酷狗、网易云、QQ 音乐七个 Provider 不再重建
MediaMetadata,也不再重绘封面:只把lyricInfo这一个键写进播放器自己发布的
metadata 对象,封面位图、URI、评分、ID、时长和未知字段全部原样交给 SystemUI。
锁屏与 AOD 看到的封面与关闭模块时完全一致,不会再因为复制 metadata 被压成纯色。 - 写入前后都有 Binder 体积守卫,超限即恢复原值并跳过;个别系统无法访问 metadata
内部数据时直接放弃附加歌词,不回退到重建。 - KuWo 改用同一套共享实现,行为不变;LX 蓝牙歌词模式下的标题还原也改为原地写入。
酷狗:歌词绑定与显示修复
- 切歌时不再先闪一下官方渲染:酷狗在发布新歌信息前就开始加载、或提前预取的歌词,
只要文件名、首行「歌名 - 歌手」或与酷狗官方歌词逐行对得上,就立即绑定到新歌。 - 歌词文件名与播放信息不一致的歌曲不再整首回落官方渲染:按酷狗官方歌词的逐行文本与
时间确认身份。 - 多歌手署名中带连字符的名字(如
知更鸟、HOYO-MiX、Chevy)不再被误拆,媒体卡片
显示正确的歌名与歌手。 - 歌词开头不再出现一行空白占位:锁屏排版用的
lyric与 Bridge 绘制的rawLyric
改为同一组歌词行,酷狗原始歌词开头的「歌名 - 歌手」行不再显示。
通用播放器 Provider 1.1.0
- 换曲后短时间内出现的「旧标题 + 当前歌手/专辑/时长」撕裂 metadata 会被识别,不会
误判换曲或挂上旧歌词。 - 新增「进度粒度粗时自动逐行」:USB Audio Player PRO 等只按粗粒度上报进度的播放器,
自动改用逐行 + 翻译,避免逐字进度抽搐;首页会提示已自动逐行,可在设置中关闭。 - 近期歌词列表会补全 App 未运行期间播放过的歌曲及其最终取词状态。
Bridge:行号时钟对齐
- 官方歌词列表的当前行与 Bridge 的逐字填充改为共用同一个平滑时钟:Bridge 只调整
SystemUI 歌词列表控制器及其换行定时器收到的播放位置,动画、当前索引、滚动与定时器
仍全部由 SystemUI 负责。行边界不再回跳,高亮行与逐字填充同时切换,进度上报粗糙的
播放器改善尤其明显。 - 控制器按方法形状唯一匹配,不依赖混淆名;无法唯一匹配时只保留单调保护,不做对齐。
兼容矩阵与升级
Bridge 仍只作用于 system 和 com.android.systemui,不进入播放器进程。Provider 仍为
14 个 libxposed API 102 模块:
| Provider | 版本 | Provider | 版本 |
|---|---|---|---|
| Salt | 1.1.1 (7) | Cone | 1.1.1 (3) |
| KuWo | 1.2.1 (4) | LX | 1.2.0 (3) |
| Poweramp | 1.2.0 (3) | Metrolist | 1.2.0 (3) |
| 酷狗 | 1.2.3 (6) | QQ 音乐 | 1.2.0 (3) |
| 网易云 | 1.2.0 (3) | Apple Music | 1.2.0 (3) |
| Spotify | 1.1.1 (3) | 汽水音乐 | 1.1.1 (3) |
| 通用播放器 | 1.1.0 (2) | Readify | 1.0.1 (2) |
- 从同一个 v4.4.0 Release 安装 Bridge 与所需 Provider APK。
- Bridge 作用域保持
system与com.android.systemui。 - 升级后强行停止播放器并重启 SystemUI;涉及作用域变化时重启手机。
验证与已知限制
- 本地门禁:Bridge 单测、debug/release lint、debug 构建与发布契约校验;Provider
testV5Matrix(529 项单测)、14 模块 debug 构建与 13 个 release 模块的 R8 构建。 - 设备验收在 PJZ110 上完成,覆盖七个只追加 Provider 的封面与歌词、酷狗切歌与
「希望有羽毛和翅膀」等问题曲目、通用播放器新行为以及 Bridge 行号时钟对齐。 - tag workflow 生成正式签名资产,校验包名/版本、证书、zipalign 与 DEX guards,并将
Providermain冻结到完整 commit。 - 酷狗原始歌词开头的「歌名 - 歌手」行不再显示在锁屏歌词中。
- Spotify、汽水音乐、Cone、Salt 仍沿用原有 metadata 复制方式,本版未改动。
- 播放器进度相对实际声音的固定偏差尚未校准。
- 兼容性仍取决于厂商 SystemUI 实现,以及播放器经 MediaSession 暴露的歌词与进度信息。
资产
正式 Release 包含 18 项已验证资产:1 个 Bridge APK、14 个 Provider APK、1 个 Provider
ZIP、release-assets-v4.4.0.json 和 SHA256SUMS。Provider ZIP 只包含 14 个顶层
Provider APK。
致谢
感谢 Salt Player 提供字符上浮阶跃模型的视觉参考,也感谢 Lyrico 与 Lyrico-Plugins 在
本地音乐元数据、歌词管理和插件化歌词源上的开源工作与启发。
English
Providers: append-only lyricInfo, native artwork
- The LX, Poweramp, Apple Music, Metrolist, KuGou, NetEase, and QQ Music Providers no longer
rebuildMediaMetadataor redraw artwork. They write the singlelyricInfokey into the
metadata object the player itself published, so artwork bitmaps, URIs, ratings, IDs,
duration, and unknown fields reach SystemUI untouched. Lock-screen and AOD artwork now
matches what you see with the module disabled and no longer collapses to a solid color. - The write is Binder-size guarded and rolled back when oversized. If a system build does not
expose the metadata's internal data, the Provider skips the lyric instead of falling back to
a rebuild. - KuWo moves onto the same shared implementation with unchanged behavior; LX's Bluetooth-lyric
title restoration is now written in place as well.
KuGou: lyric binding and display fixes
- Switching tracks no longer flashes the official renderer first. Lyrics KuGou starts loading
just before it publishes the new track, or prefetches during the previous one, bind to the
new track as soon as their file name, leading "title - artist" line, or line-by-line content
matches KuGou's own official lyric. - Tracks whose lyric file name disagrees with the playing metadata no longer fall back to the
official renderer for the whole song; the Provider confirms them by the official lyric's
timed lines. - Hyphenated names inside multi-artist credits (for example
知更鸟、HOYO-MiX、Chevy) are no
longer split, so the media card shows the correct title and artist. - The empty placeholder row at the start of the lyrics is gone: the
lyricfield SystemUI lays
out and therawLyricfield Bridge draws now carry the same lines, and KuGou's leading
"title - artist" line is no longer shown.
Universal Player Provider 1.1.0
- Torn metadata that pairs a stale title with the current track's artist, album, and duration
right after a switch is recognized, so it neither starts a new track nor attaches old lyrics. - New "Line lyrics for coarse clocks": players such as USB Audio Player PRO that report
progress coarsely automatically switch to line timing plus translation instead of a jittery
word fill. The home screen notes the fallback, and it can be turned off in settings. - The recent-lyrics list fills in tracks played while the app was not running, with their final
fetch state.
Bridge: line clock alignment
- The official lyric list's current row and Bridge's word fill now share one smooth clock.
Bridge only adjusts the playback position handed to SystemUI's lyric-list controller and its
line-switch timer; animation, current index, scrolling, and timers stay with SystemUI. Line
boundaries no longer jump back, and the highlighted row switches together with the word fill,
most visibly for players with coarse progress reports. - The controller is matched uniquely by method shape, not by obfuscated names. When no unique
match exists, only the monotonic guard remains and no alignment is applied.
Compatibility and upgrade
Bridge still scopes only system and com.android.systemui and never enters player processes.
Providers remain a 14-module libxposed API 102 matrix:
| Provider | Version | Provider | Version |
|---|---|---|---|
| Salt | 1.1.1 (7) | Cone | 1.1.1 (3) |
| KuWo | 1.2.1 (4) | LX | 1.2.0 (3) |
| Poweramp | 1.2.0 (3) | Metrolist | 1.2.0 (3) |
| KuGou | 1.2.3 (6) | QQ Music | 1.2.0 (3) |
| NetEase | 1.2.0 (3) | Apple Music | 1.2.0 (3) |
| Spotify | 1.1.1 (3) | QiShui | 1.1.1 (3) |
| Universal Player | 1.1.0 (2) | Readify | 1.0.1 (2) |
- Install Bridge and the Provider APKs you need from the same v4.4.0 Release.
- Keep the Bridge scope at
systemandcom.android.systemui. - After upgrading, force-stop the player and restart SystemUI; reboot when scopes change.
Validation and known limits
- Local gates: Bridge unit tests, debug/release lint, debug build, and release-contract
validation; ProvidertestV5Matrix(529 unit tests), debug builds of all 14 modules, and R8
builds of the 13 minified release modules. - Device acceptance on PJZ110 covered artwork and lyrics for the seven append-only Providers,
KuGou track switching and previously affected tracks, the new Universal Player behavior, and
Bridge line clock alignment. - The tag workflow builds formally signed assets, checks package/version, certificate,
zipalign, and DEX guards, and freezes Providermainto a full commit. - KuGou's leading "title - artist" lyric line is no longer shown on the lock screen.
- Spotify, QiShui, Cone, and Salt keep their existing metadata copy path in this release.
- A player's fixed offset between reported progress and actual audio is not calibrated yet.
- Compatibility still depends on the vendor SystemUI implementation and on the lyric and
progress data a player exposes through MediaSession.
Assets
The formal Release contains 18 verified assets: 1 Bridge APK, 14 Provider APKs, 1 Provider ZIP,
release-assets-v4.4.0.json, and SHA256SUMS. The Provider ZIP contains only the 14 top-level
Provider APKs.
Acknowledgements
Thanks to Salt Player for the visual reference behind the character float-up model, and to
Lyrico and Lyrico-Plugins for their open-source work and inspiration on local music metadata,
lyric management, and pluggable lyric sources.
