Releases: Xposed-Modules-Repo/io.github.andrealtb.lockscreenlyrics
Releases · Xposed-Modules-Repo/io.github.andrealtb.lockscreenlyrics
v1.1.0
更新内容
- 尝试蹬掉官方云控以及白名单
v1.7.1 - Keep-awake and LSP sync fixes
更新内容
- 修复部分 Salt Player 构建未发布旧桌面歌词 action 时,ColorOS 锁屏歌词翻译按钮始终不出现的问题;模块现在会向媒体会话播放状态注入公开翻译开关 action。
- 屏幕超时保活改为 15 秒
SCREEN_BRIGHT_WAKE_LOCK租约,并在保活期间按 8 秒节奏续租与发送userActivity,避免自然超时后进入降亮/AOD。 - 保活证据改为以最近可见的官方锁屏歌词
TextView为主,刚收到的歌词模型或官方歌词元数据只保留 3 秒过渡窗口,避免播放器异常退出或 OPlus Adapter 未清理时旧模型继续保活。 ACTION_USER_PRESENT后增加 Keyguard 延迟复核:人脸识别成功但仍停留在锁屏歌词页时会恢复保活,真正离开锁屏后立即释放。- Release workflow 新增 LSPosed/Xposed 模块仓库同步步骤,发版 APK 会同步发布到
Xposed-Modules-Repo/io.github.andrealtb.lockscreenlyrics。
验证
- 本地已验证
testDebugUnitTest、assembleDebug、lintDebug。 - 继续保留既有歌词布局、逐字绘制、切歌淡入、翻译识别与翻译按钮恢复逻辑。
升级提示
安装后请在 LSPosed 中确认模块已勾选目标播放器与系统界面,然后重启播放器进程和系统界面;如果刚从旧版升级,建议直接重启设备以确保新版 SystemUI Hook 与屏幕超时策略完整生效。
v1.7.0 - Stable lyric sessions and lock-screen layout
更新内容
- 新增播放器无关的歌词会话规约器,将异步歌词回调与稳定曲目信息绑定,避免切歌期间把新歌词写入上一首歌曲;同时兼容 Salt Player 的状态栏/车载歌词转发元数据。
- SystemUI 私有媒体与歌词入口改用 DexKit 动态识别,并保留旧类名回退路径,降低 ColorOS/OPlus 更新或代码混淆带来的失效风险。
- 在歌词进入 OPlus 官方列表前统一规范化:同一时间戳只保留主歌词 item,翻译与逐字信息继续保留在完整模型中;过滤制作信息、标题歌手行和零宽占位行。
- 修复部分双语 LRC 被解析为“中文主句、英文翻译”的问题,并增加 Opalite 零宽占位行回归测试。
- 改进重复歌词、首行预滚动和官方列表位置映射,使用时间戳、规范化文本与出现顺序共同定位当前句。
- 锁屏歌词采用稳定的
80dp物理槽位和6dp间距;短句视觉密度收紧,长句继续使用两行滑动窗口,当前进度行下移约48dp。 - 移除按内容动态改变 item 几何的方案,避免每句播放完成时出现挤压、下跳或 RecyclerView 重新测量。
- 改进 Seedling 播放位置同步、歌词界面可见性恢复、切歌淡入恢复和屏幕超时保活状态更新。
- 新增适用于中文路径的本地 Gradle 构建脚本,并补充歌词会话、布局策略、LRC 规范化、曲目身份与双语解析测试。
已验证场景
- Salt Player 不同歌曲连续切换、暂停恢复与进度跳转。
- 连续短句、长句、翻译行、重复副歌和双语同时间戳歌词。
- Opalite 中零宽占位行紧邻同时间戳中英歌词的解析场景。
- 翻译按钮、锁屏超时保活与切歌歌词渐变在播放器重启后的正常恢复。
升级提示
安装后请在 LSPosed 中确认模块已勾选目标播放器与系统界面,然后重启播放器进程和系统界面;建议直接重启设备以确保新版 SystemUI Hook 与 DexKit 缓存完整生效。
v1.6.0 - ConePlayer and Salt DexKit adapters
更新内容
- 新增 ConePlayer 适配,支持正式版与 Google Play 版,并已跨版本验证 1.1.3、1.1.4 和 1.1.5。
- ConePlayer 歌词解析入口改由 DexKit 动态识别,不依赖混淆类名;兼容单参数与双参数解析方法。
- 为未主动提供翻译动作的播放器补充翻译开关,同时保留收藏等已有自定义动作。
- Salt Player 适配器迁移到 DexKit,通过歌词来源枚举、滚动状态枚举和结果类结构动态定位,已验证 12.0.0 正式版与 alpha07。
- 调整
lyricInfo数据优先级:播放器主动增强接入优先,其次使用模块捕获的完整歌词,播放器官方简单lyricInfo仅作为兜底。
作用域变化
- 新增
ink.trantor.coneplayer。 - 新增
ink.trantor.coneplayer.gp。 - 保持
com.salt.music与com.android.systemui支持。
升级提示
安装后请在 LSPosed 中确认模块已勾选对应播放器与系统界面,然后重启相关播放器进程和系统界面;若首次安装,建议直接重启设备。
v1.5.2 · 重复歌词与翻译按钮修复
更新内容
- 修复歌词正文存在重复句时,当前句可能无法进入逐字渲染的问题;现在会优先匹配实际播放位置对应的重复句。
- 修复接入公开翻译开关协议的播放器中,ColorOS Rule0 误把“上一首”显示为翻译按钮的问题。
- 将翻译动作提升到 Rule0 自定义动作首位,同时保留上一首、播放/暂停和下一首的原有位置与行为。
- 增加重复歌词匹配和翻译动作排序的回归测试。
播放器接入
- 继续使用公开动作
io.github.andrealtb.lockscreenlyrics.action.TOGGLE_TRANSLATION,协议本身没有变化。 - 已接入该动作的播放器无需修改即可获得本次按钮排序修复。
升级提示
安装后请在 LSPosed 中确认模块作用域,并重启系统界面或设备,使新版 SystemUI Hook 生效。
v1.5.1 · 锁屏歌词排版与翻译交互优化
更新内容
- 在保持歌词槽高固定的前提下,将官方歌词行间距收紧至 6dp,避免动态高度引起滚动抖动。
- 无翻译歌词使用更大的 24sp 字号和均衡换行,按内容显示 2–3 行并保持垂直居中。
- 过长翻译会随当前歌词进度横向滚动,减少文字超出屏幕边界的问题。
- 翻译按钮仅在当前歌曲含可用翻译时显示。
- 优化关闭翻译时从“2 行歌词 + 1 行翻译”过渡到“3 行歌词”的补行动画。
播放器接入
- 新增公开动作
io.github.andrealtb.lockscreenlyrics.action.TOGGLE_TRANSLATION,主动接入lyricInfo的播放器可提供锁屏翻译开关。 - 自动为外部歌词提供方配置 OPlus Rule0 自定义动作槽位。
- 播放器包内存在
ic_translation时优先使用;否则自动采用模块内置的透明背景、单色 Salt 风格翻译图标。 - 中英文播放器接入文档已补充动作顺序、图标及生命周期要求。
升级提示
安装后请在 LSPosed 中确认模块作用域,并重启系统界面或设备。
v1.5.0
更新内容
- 引入 Lyrics Core 解析适配层,增强多种时间轴歌词、逐字时序和同时间戳双语歌词兼容性。
- 新增按曲目缓存与标准化身份匹配,兼容
[Explicit]/[Clean]后缀及歌词早于媒体元数据到达的情况。 - 完善锁屏逐字渲染:当前词辉光、焦点过渡、双语排版、长句窗口和可持久保存的翻译开关。
- 优化切歌衔接,避免闪回官方歌词,并修复行重绑与淡入重复触发造成的 RenderNode 录制异常。
- 加强首次沉浸界面进入、延迟歌词行绑定、屏幕保活和 OPlus 媒体策略兼容性。
- 清理未启用的实验钩子与 fallback,减少 SystemUI 全局热路径开销。
- 更新播放器接入文档:首次元数据应原子携带完整
lyricInfo,避免紧邻 extras 补丁被 OPlus 防抖丢弃。
验证
- 真机回归测试通过
- JUnit:7/7
- Android Lint:通过
- GitHub Debug 与签名 Release 构建:通过
构建版本:versionName 1.5.0 / versionCode 57
v1.4.1
更新内容
- 提高逐字歌词对比度
v1.4.0
更新内容
- 优化逐字歌词表现
v1.3.0
更新内容
- 新增播放器主动接入协议:播放器可直接通过 MediaSession
lyricInfo发布歌词,模块会在 SystemUI 侧动态识别,无需加入包名适配器或 LSPosed 播放器作用域。 - 支持
lyric基础逐行歌词接入;可选rawLyric用于启用模块的逐字高亮渲染。 - 保留 Salt Player 兼容适配器,其他新播放器推荐优先走
lyricInfo接入协议。 - 修复 Salt Player 12.0.0 新版本 hook 失效问题,兼容新版混淆类变化。
- 优化 Salt 歌词抓取逻辑,自动识别构造器参数中的时间轴歌词,降低版本变动导致失效的概率。
- 更新中英文接入文档,补充播放器接入方式和推荐发布时机。
- 去除SystemUI侧包名白名单。[测试]