v4.3.0
ColorOS Live Lyrics Bridge v4.3.0
简体中文
字符上浮动画
v4.3.0 为 ColorOS / OPlus 原生歌词界面新增可选的 Salt Player 式字符上浮动画。未唱
字素会停在正常基线下方,既有揭示前沿经过时沿升余弦阶跃回到基线,已唱文本则保持在
基线。它与当前的 clip-reveal、羽化和 glow 共用同一个时钟,不会引入第二条歌词进度线。
- 默认关闭;低帧率 AOD 路径会自动关闭该效果。
- “字符浮动幅度”可调 0–200%;100% 时下沉约为歌词字号的 10%,且只在动画开启时显示。
- 行激活时有 240 ms 下沉窗口;逐字行结束时有 240 ms 收尾窗口,使稳定状态回到同一基线。
- 开启“普通逐行歌词进度”后,普通 LRC 行时间戳歌词也会以整行线性前沿驱动上浮,无需
新歌词 payload 或时间格式。
渲染可靠性
换行多段行现在通过累加每段已揭示 advance 计算整行上浮前沿,修复此前前沿钉在首段末端、
只在末段可见动画的问题。可选 lift 路径保持隔离:运行时绘制异常会回退到既有整段绘制并
记录 CHAR_LIFT_UNAVAILABLE,不会让 SystemUI coordinator 拉黑歌词绑定。
设备验收覆盖逐字歌词(包含换行多段行)和已开启进度的普通逐行歌词。普通逐行最后约
1.5 个字宽会在行切换前留在过渡窗口内,由既有行切换动画吸收;提前改写映射会让上浮与
羽化前沿失步,因此保留这一已接受的行为。
架构、兼容性与升级
Bridge 仍只作用于 system 和 com.android.systemui。Provider 继续从各自 scope 内发布
标准 MediaMetadata["lyricInfo"];本版本不恢复播放器进程 Bridge Hook 或私有歌词传输。
Provider 源码仍为 14 模块的 libxposed API 102 矩阵:12 个专属 Provider、通用播放器
Provider 与 Readify TTS Provider。v4.3.0 不改变 Provider 的业务行为,但会同步推进
规范 Provider 资产文件名与发布契约。
- 从同一 v4.3.0 Release 安装 Bridge 与所需 Provider APK。
- Bridge scope 只保留
system和com.android.systemui。 - 开启“字符上浮动画”;普通 LRC 歌词还需开启“普通逐行歌词进度”。
- 升级或变更 scope 后重启播放器与 SystemUI。
验证与已知限制
- 本地发布门禁覆盖 Bridge 单测、debug/release lint、debug 构建、发布契约校验以及
14-Provider Debug 矩阵。 - tag workflow 生成正式签名资产,校验包名/版本、证书、zipalign 与 DEX guards,将
Providermain冻结到完整 commit,并从同一验证批次发布 Bridge 与 LSP mirror。 - 低帧率 AOD 下动画有意关闭。拖长音缓慢推进时仍可能有极轻微的像素阶跃感,已在设备上
验收并接受。 - 兼容性仍取决于厂商 SystemUI 实现,以及播放器经 MediaSession 暴露的歌词时间信息。
资产
正式 Release 包含 18 项已验证资产:1 个 Bridge APK、14 个 Provider APK、1 个 Provider
ZIP、release-assets-v4.3.0.json 和 SHA256SUMS。Provider ZIP 只包含 14 个顶层
Provider APK。
致谢
感谢 Salt Player 提供字符上浮阶跃模型的视觉参考,也感谢 Lyrico 与 Lyrico-Plugins 在
本地音乐元数据、歌词管理和插件化歌词源上的开源工作与启发。
English
Character float-up
v4.3.0 adds an optional Salt Player-style character float-up effect to the native
ColorOS / OPlus lyric surface. Unsung graphemes rest below the normal baseline and
rise back along a cosine step as the existing reveal front reaches them; sung text
then remains at the baseline. It follows the same clip-reveal, feather, and glow
timing already used by the renderer rather than introducing a second lyric clock.
- The effect is off by default and automatically disabled on the low-frame-rate
always-on display path. - Character float amount is available from 0–200%; 100% is a sink of about
10% of the lyric text size, and the control appears only while the effect is on. - It uses a 240 ms sink-in at line activation and a 240 ms finish window so a
completed word-timed row returns to one stable baseline. - With Line-timed lyric progress enabled, ordinary LRC-style line-timed lyrics
use the same float-up front across the whole line. No new lyric payload or timing
format is required.
Rendering reliability
Wrapped lines now resolve their float-up front by summing each segment's revealed
advance. This fixes the former first-segment pinning that could leave animation
visible only on a trailing wrapped segment. The optional lift path remains isolated:
if a runtime draw error occurs, it falls back to the existing whole-segment draw and
records a CHAR_LIFT_UNAVAILABLE warning instead of allowing SystemUI's coordinator
to blacklist the lyric binding.
Device validation covered word-timed lyrics, including wrapped multi-segment lines,
and line-timed lyrics with progress enabled. The accepted visual behavior keeps the
final roughly 1.5 glyph widths in their transition window until an ordinary
line-to-line handoff; changing that mapping would desynchronize lift from the
feathered reveal front.
Architecture, compatibility, and upgrade
Bridge remains scoped only to system and com.android.systemui. Providers continue
to publish standard MediaMetadata["lyricInfo"] from their own scoped processes; this
release does not restore a player-process Bridge hook or a private lyric transport.
The Provider source remains the 14-module libxposed API 102 matrix: 12 dedicated
providers, Universal Player Provider, and Readify TTS Provider. Provider business
behavior is unchanged in v4.3.0; the canonical Provider asset names and release
contract advance together with Bridge.
- Install the Bridge and any required Provider APKs from the same v4.3.0 release.
- Keep Bridge scope limited to
systemandcom.android.systemui. - Enable Character lift animation to use the new effect. For ordinary LRC
lyrics, also enable Line-timed lyric progress. - Restart the player and SystemUI after upgrading or changing scope.
Validation and known limits
- Local release gates cover Bridge unit tests, debug/release lint, debug assembly,
release-contract validation, and the 14-Provider debug matrix. - The tag workflow produces the formal signed assets, validates package/version,
certificate, zipalign, and DEX guards, freezes Providermainto a full commit,
and publishes the Bridge and LSP mirror from the same verified batch. - The effect is intentionally disabled in low-frame-rate AOD mode. Slowly advancing
sustained syllables can still have a very slight pixel-step character that is
inherent to raster frames; it was evaluated on device and accepted. - Compatibility still depends on the vendor SystemUI implementation and the lyric
timing that the selected player exposes through its MediaSession.
Assets
The formal release contains 18 verified assets: one Bridge APK, 14 Provider APKs,
one Provider ZIP, release-assets-v4.3.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 float-up step model, and
to Lyrico and Lyrico-Plugins for their open-source work and inspiration around local
music metadata, lyric management, and plugin-based lyric sources.
