Releases: Xposed-Modules-Repo/io.github.andrealtb.lockscreenlyrics
Release list
v2.4.0
ColorOS Live Lyrics Bridge v2.4.0
这一版重点优化锁屏歌词布局、亮屏/AOD 切换稳定性,并新增汽水音乐 Provider 适配。
核心更新
- 优化英文歌词换行:短句能一行显示就不再强行拆行,例如
Forgive me, Peter。 - 长英文歌词仍会在实际溢出时做均衡换行,避免过长行挤出屏幕。
- 修复亮屏切 AOD 时歌词/翻译行闪烁抖动:在
TextView.setText和 attach 阶段提前固定歌词高度,避免 AOD 模板重绑时先按单行布局。 - 增强 AOD/锁屏切换稳定性:增加最近绘制帧 fallback、翻译短缓存,减少系统重排或短暂数据空窗造成的视觉跳动。
- 优化歌词面板淡入逻辑,避免已经可见时重复隐藏再淡入。
- 改善歌曲开头首句还没到时间轴时的显示稳定性。
播放器与 AOD 适配
- 新增汽水音乐 Provider 适配,Release 附带
LyricProvider-QiShui-v2.4.0.apk。
汽水音乐使用提醒
汽水音乐需要额外安装 LyricProvider-QiShui-v2.4.0.apk,并在 LSPosed 中为 com.luna.music 启用该 Provider。
同时,请在 LSP 管理器中为汽水音乐开启“还原内联钩子”:对列表中的应用清理 libart.so。否则汽水音乐可能弹出“当前版本不安全”,Provider 也可能无法稳定获取歌词。
另外,感谢来自酷安用户@sylajiao的捐赠。
文档与发布
- 更新演示 GIF,体积从约 43.6 MB 降到约 17.2 MB。
- 新增捐赠二维码
PY_QR.png。 - README / 中文 README / LSPosed README 增加支持项目说明。
- Release workflow 增加自动附加 Donate 区块的逻辑。
- Release workflow 新增汽水音乐 Provider 构建与发布资产。
Release 资产
ColorOS-Live-Lyrics-Bridge-v2.4.0.apkLyricProvider-QQMusic-v2.4.0.apkLyricProvider-163Music-v2.4.0.apkLyricProvider-AppleMusic-v2.4.0.apkLyricProvider-Poweramp-v2.4.0.apkLyricProvider-Spotify-v2.4.0.apkLyricProvider-QiShui-v2.4.0.apk
测试
- 新增
LyricLineBreakPolicy换行策略测试,覆盖“短英文不拆行”和“长英文可均衡拆行”。 - 发布前执行
:app:assembleDebug、:qishui-music:assembleDebug与git diff --check。
捐赠
v2.3.3
ColorOS Live Lyrics Bridge v2.3.3
这一版继续修复 v2.3.x 的锁屏歌词渲染稳定性,重点处理拖动播放进度后的实时行恢复、歌词列表定位,以及 LyricProvider 接入播放器切歌时偶发露出官方渲染的问题。
当前支持的播放器
Bridge 内置适配:
- Salt Player
- ConePlayer 正式版与 Google Play 版
- 主动发布完整
MediaMetadata["lyricInfo"]的播放器,例如 Halcyon - Poweramp 内部适配
Provider 适配,需要额外安装 Release 附带的独立 LyricProvider APK,并在 LSPosed 中为目标播放器启用:
LyricProvider-QQMusic:QQ 音乐LyricProvider-163Music:网易云音乐、网易云音乐荣耀版LyricProvider-AppleMusic:Apple MusicLyricProvider-Poweramp:Poweramp 外部 Provider 兼容包LyricProvider-Spotify:Spotify
修复与改进
- 修复拖动播放进度后,目标位置落在间奏或两句歌词中间时,锁屏歌词可能停留在旧行,直到下一句歌词开始才滚动的问题。
- 修复将播放进度拉到开头时,第一句歌词小概率落在渲染区域外,需要唱到第二句才恢复的问题。
- 统一 seek 后强制定位和实时播放时的活动行锚点,减少目标行落在绘制区域偏下、随后又被实时歌词拉回的问题。
- 优化 seek 后歌词跳转过程中的滚动保护和精确落点校准,减少定位过头、回弹和上下抖动。
- 修复 Apple Music、QQ 音乐、网易云音乐等 LyricProvider 接入播放器切歌时,外部歌词 handoff 期间可能提前淡入,导致官方渲染闪一下或整体绘制闪烁的问题。
- 收敛 seek、handoff 和布局定位诊断日志,正式使用时减少
LockscreenLyricslogcat 噪声;需要排查时仍可通过 DEBUG 日志级别打开细节输出。
Release 资产
ColorOS-Live-Lyrics-Bridge-v2.3.3.apkLyricProvider-QQMusic-v2.3.3.apkLyricProvider-163Music-v2.3.3.apkLyricProvider-AppleMusic-v2.3.3.apkLyricProvider-Poweramp-v2.3.3.apkLyricProvider-Spotify-v2.3.3.apk
验证
.\scripts\gradle-local.cmd :app:testDebugUnitTest :app:assembleDebug.\scripts\gradle-local.cmd :app:assembleReleasepowershell.exe -NoProfile -ExecutionPolicy Bypass -File scripts\validate-lsposed-metadata.ps1git diff --check
v2.3.2
ColorOS Live Lyrics Bridge v2.3.2
这一版继续收敛 v2.3.x 的歌词解析兼容性,重点修复 LyricProvider 外部歌词在部分混合逐字歌词格式下出现的主行、翻译行和官方列表项错位问题。
当前支持的播放器
Bridge 内置适配(只安装 ColorOS-Live-Lyrics-Bridge 即可):
- Salt Player
- ConePlayer 正式版与 Google Play 版
- 主动发布完整
MediaMetadata["lyricInfo"]的播放器,例如 Halcyon - Poweramp 内部适配
Provider 适配(需要额外安装 Release 附带的独立 LyricProvider APK,并在 LSPosed 中为目标播放器启用):
LyricProvider-QQMusic:QQ 音乐LyricProvider-163Music:网易云音乐、网易云音乐荣耀版LyricProvider-AppleMusic:Apple MusicLyricProvider-Poweramp:Poweramp 外部 Provider 兼容包LyricProvider-Spotify:Spotify
修复与改进
- 修复网易云音乐等 Provider 外部歌词中,“逐字主行后紧跟无逐字主行”被误判为翻译行,导致锁屏歌词顺序错乱、重复行、翻译位显示主歌词的问题。
- 修复外部歌词模型和 ColorOS 官方歌词列表项数量不一致时,adapter index 回退到错误主行导致的首屏/切歌渲染错位。
- 改进官方歌词显示文本别名映射,只在文本确实匹配主行时覆盖显示文本,避免把元信息或下一句歌词挂到逐字行上。
- 修复
We are, we are, we are、Is it? Is it?这类重复英文短句被误识别成罗马音,进而只显示翻译行的问题。 - 为 LyricProvider 外部歌词增加 UTF-8 被 GB18030 误解码时的 Bridge 侧兜底修复;Provider 模块本身不引入本次调试期的 163 Music 编码补丁。
- 关闭正式包中的歌词解析 trace 日志,减少正常使用时的 logcat 噪声。
- 改进本地 Gradle 构建脚本在中文路径、Gradle 锁文件、项目目录 ACL 异常场景下的 fallback 能力。
Release 资产
ColorOS-Live-Lyrics-Bridge-v2.3.2.apkLyricProvider-QQMusic-v2.3.2.apkLyricProvider-163Music-v2.3.2.apkLyricProvider-AppleMusic-v2.3.2.apkLyricProvider-Poweramp-v2.3.2.apkLyricProvider-Spotify-v2.3.2.apk
验证
.\scripts\gradle-local.cmd :app:testDebugUnitTest :app:assembleDebug.\scripts\gradle-local.cmd :app:assembleReleasepowershell.exe -NoProfile -ExecutionPolicy Bypass -File scripts\validate-lsposed-metadata.ps1git diff --check
v2.3.1
ColorOS Live Lyrics Bridge v2.3.1
这一版是 v2.3.0 后的小修版本,重点修复歌词解析兼容性、连续快进后的逐字渲染恢复,以及 Apple Music Provider 的小版本兼容问题。
当前支持的播放器
Bridge 内置适配(只安装 ColorOS-Live-Lyrics-Bridge 即可):
- Salt Player
- ConePlayer 正式版与 Google Play 版
- 主动发布完整
MediaMetadata["lyricInfo"]的播放器,例如 Halcyon
Provider 适配(需要额外安装 Release 附带的独立 LyricProvider APK,并在 LSPosed 中为目标播放器启用):
LyricProvider-QQMusic:QQ 音乐LyricProvider-163Music:网易云音乐、网易云音乐荣耀版LyricProvider-AppleMusic:Apple MusicLyricProvider-Poweramp:PowerampLyricProvider-Spotify:Spotify
修复与改进
- 修复部分歌词格式下主歌词、翻译、标音行识别错误导致的渲染混乱。
- 修复锁屏界面连续快进后,逐字歌词概率不再渲染的问题。
- 加强 Apple Music Provider 的版本兼容性:使用 DexKit 查找 Apple Music 内部
PlaybackItem转换 hook 点,避免小版本混淆类名变化后失效。 - Apple Music Provider 版本更新至
1.0.22。 - 收敛 Bridge 与 Apple Music Provider 的正式版调试日志,减少正常播放时的 logcat 噪声。
Release 资产
ColorOS-Live-Lyrics-Bridge-v2.3.1.apkLyricProvider-QQMusic-v2.3.1.apkLyricProvider-163Music-v2.3.1.apkLyricProvider-AppleMusic-v2.3.1.apkLyricProvider-Poweramp-v2.3.1.apkLyricProvider-Spotify-v2.3.1.apk
验证
.\scripts\gradle-local.cmd testDebugUnitTest assembleDebugpowershell.exe -NoProfile -ExecutionPolicy Bypass -File scripts\validate-lsposed-metadata.ps1git diff --check
v2.3.0
ColorOS Live Lyrics Bridge v2.3.0
这一版正式加入 Apple Music Provider,并修复外部 Provider 歌词在锁屏渲染中的若干边界问题。
当前支持的播放器
Bridge 内置适配(只安装 ColorOS-Live-Lyrics-Bridge 即可):
- Salt Player
- ConePlayer 正式版与 Google Play 版
- 主动发布完整
MediaMetadata["lyricInfo"]的播放器,例如 Halcyon
Provider 适配(需要额外安装 Release 附带的独立 LyricProvider APK,并在 LSPosed 中为目标播放器启用):
LyricProvider-QQMusic:QQ 音乐LyricProvider-163Music:网易云音乐、网易云音乐荣耀版LyricProvider-AppleMusic:Apple MusicLyricProvider-Poweramp:PowerampLyricProvider-Spotify:Spotify(不支持翻译)
改进
- 新增 Apple Music Provider:支持逐字歌词与翻译歌词,不输出背景人声或对唱格式歌词。
- Apple Music Provider 通过播放器内部歌词对象取词,并向 Bridge 转发完整
lyricInfo。 - Bridge 侧翻译开关改为按播放器独立保存,避免 Salt 等播放器关闭翻译后影响 QQ 音乐、网易云音乐、Apple Music 等 Provider。
- Bridge 可在 QQ 音乐、网易云音乐、Apple Music 等官方占用翻译按钮位置的播放器中覆盖可用媒体 action,补回翻译开关。
- 修复 Apple Music 中文主行带
Oh、Hoh、ICBM等短英文尾词时被误拆成翻译/主行错位的问题。 - 保持 Provider APK 的独立模块形态:Bridge APK 不内置大厂播放器 Hook,用户按目标播放器选择安装对应 Provider。
- 补充外部歌词源和短英文尾词解析单测,锁定 Apple Music、Poweramp、Spotify 的差异化策略。
Release 资产
ColorOS-Live-Lyrics-Bridge-v2.3.0.apkLyricProvider-QQMusic-v2.3.0.apkLyricProvider-163Music-v2.3.0.apkLyricProvider-AppleMusic-v2.3.0.apkLyricProvider-Poweramp-v2.3.0.apkLyricProvider-Spotify-v2.3.0.apk
验证
.\scripts\gradle-local.cmd testDebugUnitTest assembleDebugpowershell.exe -NoProfile -ExecutionPolicy Bypass -File scripts\validate-lsposed-metadata.ps1git diff --check
v2.2.0
ColorOS Live Lyrics Bridge v2.2.0
这一版把 QQ 音乐、网易云音乐、Poweramp、Spotify 的 LyricProvider 辅助模块纳入正式发布包,并整理 Bridge 侧对外部歌词源的接入逻辑。
当前支持的播放器
Bridge 内置适配(只安装 ColorOS-Live-Lyrics-Bridge 即可):
- Salt Player
- ConePlayer 正式版与 Google Play 版
- 主动发布完整
MediaMetadata["lyricInfo"]的播放器,例如 Halcyon
Provider 适配(需要额外安装 Release 附带的独立 LyricProvider APK,并在 LSPosed 中为目标播放器启用):
LyricProvider-QQMusic:QQ 音乐LyricProvider-163Music:网易云音乐、网易云音乐荣耀版LyricProvider-Poweramp:PowerampLyricProvider-Spotify:Spotify(不支持翻译)
改进
- 新增 Bridge 侧外部歌词源注册表,统一管理 Provider source、播放器包名、播放状态能力和 Poweramp 特殊匹配策略。
- 扩展外部
lyricInfo广播契约,支持trackChanged、lyricReady、播放状态、播放进度和 track generation,降低切歌后旧歌词回绑概率。 - 支持 Spotify Provider 发送播放状态,修复广告、暂停和切歌场景下歌词抢跑或停不住的问题。
- 支持 Poweramp Provider 在播放器内部补写
lyricInfo,优先使用 Poweramp 当前媒体会话和内部歌词结果,避免外部广播路线切歌后长时间无歌词。 - 保留 Provider APK 的独立模块形态:Bridge APK 不内置大厂播放器 Hook,用户按目标播放器选择安装对应 Provider。
- 补充外部歌词源能力单测,锁定 Spotify 与 Poweramp 的 source 映射和差异化策略。
Release 资产
ColorOS-Live-Lyrics-Bridge-v2.2.0.apkLyricProvider-QQMusic-v2.2.0.apkLyricProvider-163Music-v2.2.0.apkLyricProvider-Poweramp-v2.2.0.apkLyricProvider-Spotify-v2.2.0.apk
验证
.\scripts\gradle-local.cmd testDebugUnitTest assembleDebugpowershell.exe -NoProfile -ExecutionPolicy Bypass -File scripts\validate-lsposed-metadata.ps1git diff --check
v2.1.0
ColorOS Live Lyrics Bridge v2.1.0
这次主要优化锁屏歌词渲染密度、翻译切换动画和增强 LRC 双语解析稳定性。
改进
- 将官方歌词 item 从单纯固定高度改为动态槽位高度,保留
56dp最小高度和约12dp垂直留白,缓解短句间距过大和长句布局不均匀的问题。 - 翻译开关继续保持“最多两行主歌词 + 一行翻译”的显示规则,并优化展开/收起过渡,减少歌词绘制抖动和展开末尾轻微回弹。
- 在锁屏高亮状态与 AOD 暗屏切换期间增加官方
LyricsRecyclerViewsettle 窗口,降低 active line 瞬时跳动概率。 - 优化同时间戳增强 LRC 解析,避免英文逐字主歌词被误判为日文罗马音而与中文翻译互换。
- 补充 Taylor Swift 与 Beauty And A Beat 等用户反馈样例的解析回归测试,覆盖
<00:00.000>与[00:00.000]两种逐字时间标签形式。
清理
- 收拢翻译切换后的 RecyclerView、TextView 与根视图刷新逻辑。
- 移除重复的官方歌词 settle 触发,并整理歌词槽位高度计算接口。
验证
.\scripts\gradle-local.cmd testDebugUnitTest assembleDebugpowershell.exe -NoProfile -ExecutionPolicy Bypass -File scripts\validate-lsposed-metadata.ps1git diff --check
v2.0.1
ColorOS Live Lyrics Bridge v2.0.1
这是一次兼容性和锁屏渲染稳定性修复版本。
修复
- 修复日文歌词中包含“鼓”等制作信息关键词时,可能被误判为参与者/制作信息,导致主歌词丢失或和翻译错位的问题。
- 兼容同一时间戳缺少罗马音行的日文逐字歌词,优先保留日文主歌词并继续匹配中文翻译。
- 修复锁屏界面连续快进或连续切换播放位置后,逐字歌词 RecyclerView 可能停留在隐藏 alpha,导致逐字歌词不显示的问题。
- 增加更长尾的歌词可见性恢复检查,覆盖 SystemUI RecyclerView 晚布局或动画被打断后的隐藏态。
说明
- Release 继续附带
LyricProvider-QQMusicAPK,作为 QQ 音乐歌词提供模块。 ColorOS-Live-Lyrics-Bridge与LyricProvider-QQMusic使用同一套 release 签名。
验证
- 已执行
testDebugUnitTest。 - 已执行
assembleDebug。
v2.0.0
ColorOS Live Lyrics Bridge v2.0.0
这是一次面向外部歌词提供模块的主要更新:
- 适配QQ音乐
- 歌词解析优化
新增
- 接入 LyricProvider 外部歌词桥接协议,支持由歌词提供模块向 ColorOS Live Lyrics Bridge 投递完整歌词数据。
- Release 附带
LyricProvider-QQMusicAPK,可为词幕和 ColorOS Live Lyrics Bridge 提供 QQ 音乐歌词。 - SystemUI 侧支持外部歌词覆盖官方
lyricInfo,在 QQ 音乐场景下优先使用逐字歌词渲染。 - 支持外部歌词翻译数据进入锁屏歌词渲染链路。
改进
- 优化 QQ 音乐切歌稳定性,减少首句错位、官方歌词闪现、歌词区域跳动等问题。
- 优化外部歌词模型切换时的软遮罩和淡入,降低切歌时官方渲染短暂露出的概率。
- 改进歌词解析中的日语罗马音、翻译行和共享英文尾词识别,减少把罗马音误判为翻译的问题。
- 改进本地歌词解析对逐字 LRC、翻译行、长句和重复行的处理。
- 增强 SystemUI 歌词 RecyclerView 定位和首句对齐逻辑。
说明
ColorOS-Live-Lyrics-Bridge仍是 LSPosed 主模块。LyricProvider-QQMusic是本次 Release 的附加 APK,需要单独安装并在 LSPosed 中为 QQ 音乐启用。- 两个 APK 使用同一套 release 签名。
v1.9.5
更新内容
- 重构 Salt Player 歌词接入链路,改为在 Salt 最终发布歌词结果后读取歌曲与歌词结果,减少异步回调串歌、旧结果覆盖新歌、同一首歌偶发提示无歌词的问题。
- 优化歌词会话匹配与回调稳定性,改善开启状态栏歌词后部分歌曲更容易出现“暂无歌词”的情况。
- 优化普通逐字歌词、增强逐字歌词的主歌词/翻译选择逻辑,日文歌曲会自动剔除罗马音,只保留主歌词和翻译。
- 增强对歌名、词曲、编曲、制作人等参与者信息逐字行的兼容,避免这类元信息导致歌词解析中断或混乱。
- 撤回按 Live 岛、锁屏小控件、大封面、QS Media 等不同位置强制隐藏翻译按钮的实验性处理,避免影响 Salt 桌面歌词按钮和系统媒体控制卡稳定性。
温馨提示
温馨提示:如遇到歌词无法解析,锁屏提示歌曲暂无歌词,或者解析混乱/错位,请优先尝试使用 Lyrico 歌曲元数据编辑器匹配 QQ 音乐逐字歌词或增强逐字歌词。
如果问题依旧,请提供歌曲、歌词源文件以及触发 bug 后的 LSP 日志文件。
验证
- 已执行
testDebugUnitTest。 - 已执行
assembleDebug。
