Skip to content

v3.6.0

Choose a tag to compare

@Andrea-lyz Andrea-lyz released this 31 Jul 12:10

ColorOS Live Lyrics Bridge v3.6.0

v3.6.0 新增 Metrolist 的完整 LyricProvider 适配,并修复外部歌词已经成功送达、锁屏原生歌词列表却要等到暂停或继续播放才刷新的问题。本次继续使用 v4 直达协议,不改变既有 Provider 的准入和兼容方式。

Bridge

  • 在静态外部歌词注册表中加入 lyricprovider/metrolist-music 与宿主包名 com.metrolist.music 的固定绑定,支持 Provider 上报播放状态、曲目 generation 和当前曲目权威信息。
  • Metrolist Provider 的 v4 广播仍按完整 source、playerPackage、senderPackage 与 senderKind 规则校验;未知来源、宿主不匹配和旧协议不会被动态放行。
  • 修复部分首次播放或切歌场景:Bridge 已经接收并提升有效歌词模型,但 ColorOS SystemUI 的官方 LyricsRecyclerView 仍为空,只有暂停或继续播放触发元数据重载后才出现歌词。
  • 外部歌词提升成功后,Bridge 现在会在验证播放器包名、当前曲目和上下文时效后,有限次重放最近一次 SystemUI 原生歌词加载事务,让官方列表及时填充。
  • 重放逻辑是通用外部歌词恢复流程,不依赖 Metrolist 包名分支,也不会强制 setAodModeStyle、延迟首次 RecyclerView prime,或扩大普通 TextView Hook 范围。
  • 新增 Metrolist v4 fixture、source/host 准入测试和 canonical enhanced-LRC 逐字解析测试。

Metrolist LyricProvider

  • 新增独立的 LyricProvider-Metrolist,作用域为 com.metrolist.music。Provider 从 Metrolist 当前媒体模型取得歌曲 ID、标题、歌手、专辑和秒级时长,并转换成 Bridge 所需的毫秒级媒体身份。
  • Metrolist是适用于安卓系统的第三方 YouTube Music 客户端,它将作为替代适用于对 YouTube Music 的适配而发布。
  • Provider 读取 Metrolist 的 files/datastore/settings.preferences_pb,解析 LyricsProviderOrderKey 与供应商启用状态,保持用户配置的相对顺序,不再使用猜测路径或扫描 protobuf 可打印字符串。
  • 当前实现依次支持 BetterLyrics、LrcLib 与 KuGou。BetterLyrics 使用标题、歌手、时长和专辑参数;LrcLib 接收 album_name;KuGou 搜索词也包含专辑信息,减少错误候选。
  • BetterLyrics TTML 会保留毫秒级行时间、逐字 span、结尾时间、audio lyricOffset 和真实单词边界。无空白的相邻拉丁 span 会先合并为同一单词,修复 call inga lonemega phone 等错误空格;CJK span 仍保持独立逐字时间。
  • KuGou 优先下载并解析 KRC 逐字歌词,生成标准 [行时间]<词时间>文本...<结束时间> enhanced LRC;仅在 KRC 不可用时回退逐行 LRC。
  • 首次播放和切歌搜索绑定当前 track generation。切歌会取消旧任务及正在进行的 OkHttp 请求,每个供应商具有独立 8 秒超时,过期结果不会覆盖新曲。
  • 修复 Hooker 在 zygote 初始化阶段提前创建主线程 Handler 导致的初始化失败,以及发送前歌词清洗正则异常。主线程对象现在延迟到真实应用回调中创建。
  • Provider 继续保留 Lyricon 的正常 player.setSong / playback state 路径,并在同一当前曲目校验后发送 Bridge v4 payload。

诊断与文档

  • 新增统一的 Bridge / Provider 日志抓取说明与脚本,明确 adb logcat -s 只过滤输出,不能开启 Log.isLoggable 控制的调试日志。
  • Provider 日志现在区分曲目识别、供应商顺序、命中来源、timing=word|line、行内时间标签数量、v4 发送和 Bridge 接收阶段,便于定位“搜索成功但未发送”或“已接收但未填充官方列表”。
  • Provider 适配文档补充 DataStore、异步 generation、逐字格式、TTML 单词边界、KRC 回退和可取消网络请求等门禁。

兼容与验证

  • Bridge 全量 testDebugUnitTestassembleDebug 通过。
  • Metrolist Provider testDebugUnitTestassembleDebug 通过;测试覆盖 DataStore protobuf、供应商顺序与超时、BetterLyrics TTML、KuGou KRC、enhanced-LRC 清洗和 v4 payload。
  • Android 16 实机验证通过首次播放、连续切歌、暂停恢复、供应商优先级、BetterLyrics 专辑匹配、KuGou KRC 逐字时间和拉丁音节合并。
  • 实机日志确认 Bridge 能接收并提升 Metrolist 文档、重放 SystemUI 元数据歌词加载、生成非零 RecyclerView itemCount 并完成首次 prime,无需再手动暂停或继续播放。
  • Salt Player、ConePlayer 和已有 8 个 LyricProvider 的适配方式保持不变;外部歌词协议版本仍为 v4。本次不调整已知良好的 AOD 切换时序和官方歌词几何策略。

升级说明

  • Metrolist 用户需要同时安装同一 Release 中的 ColorOS-Live-Lyrics-Bridge-v3.6.0.apkLyricProvider-Metrolist-v3.6.0.apk
  • 在 LSPosed 中启用 Metrolist Provider,并只勾选 Metrolist 作为作用域;随后强行停止并重新打开 Metrolist。首次安装或作用域变化后建议重启设备。
  • 已使用其他播放器的用户可以直接更新 Bridge;原有 Provider 的作用域和使用方式无需改变。Bridge 与 Provider 应来自同一 Release。
  • Metrolist Provider 当前发送原文逐字或逐行歌词,不生成歌词源未提供的翻译。

Release 资产

  • ColorOS-Live-Lyrics-Bridge-v3.6.0.apk
  • LyricProvider-Metrolist-v3.6.0.apk
  • LyricProvider-QQMusic-v3.6.0.apk
  • LyricProvider-163Music-v3.6.0.apk
  • LyricProvider-AppleMusic-v3.6.0.apk
  • LyricProvider-Poweramp-v3.6.0.apk
  • LyricProvider-Spotify-v3.6.0.apk
  • LyricProvider-QiShui-v3.6.0.apk
  • LyricProvider-KuGou-v3.6.0.apk
  • LyricProvider-LXMusic-v3.6.0.apk
  • LyricProvider-v3.6.0.zip

Provider 为独立 LSPosed 模块,只需安装自己使用的播放器对应 APK。

Donate

WeChat and Alipay donation QR code