v3.2.0 hardens the settings-application chain, fixes edge-case word-progress matching and cold-start artwork races, and removes per-frame SystemUI layout churn from custom lyric rendering. The settings page now uses lightweight sliders, stable LTPO-aware refresh-rate hints, and a cached floating preview while scrolling. The verified AOD attach/prime timing remains unchanged. Release assets include LyricProvider-v3.2.0.zip for installing all bundled provider APKs together.
将受支持音乐播放器的时间轴歌词桥接到 ColorOS/OPlus 原生锁屏歌词界面,并补充逐字高亮、翻译切换、媒体卡片和后台恢复能力。
- 内置 Salt Player 与 ConePlayer 兼容适配器。
- 支持播放器通过
MediaMetadata["lyricInfo"]主动接入,无需依赖模块 APK。 - Release 附带可选 LyricProvider APK,可分别适配 QQ 音乐、网易云音乐/荣耀版、Apple Music、Poweramp、Spotify、汽水音乐和酷狗音乐/概念版;Spotify Provider 当前仅支持原文歌词,暂不支持翻译。
- 支持逐行 LRC、逐字
rawLyric、翻译行识别和重复歌词稳定定位;关闭普通逐行伪逐字时,三行长歌词会在固定两行视窗内随整句进度平滑移动。 - 提供版本化歌词界面设置、四种外观预设和动态预览,可调透明度、模糊、缩放、光晕、颜色、动效、字号、翻译比例、字重、对齐、行距、长文本浏览与内容刷新上限;播放器翻译默认值和歌词开头信息清理使用独立二级页面。
- 通过通用歌词事务层隔离异步回调,避免有歌词/无歌词曲目连续切换时歌词错绑或后续持续显示无歌词。
- 长日语、中文歌词按 Unicode 字符边界换行,避免无空格长句被自动缩小。
- 保留播放器原始媒体 action 语义,仅通过 OPlus Rule0 提供翻译按钮,避免上一首、播放/暂停、下一首错位。
- Salt Player 完全停止后可从 ColorOS 历史媒体卡片恢复播放。
- ConePlayer 冷启动恢复播放时可从已选中音轨元数据恢复歌词。
- 内置播放器自动接入 OPlus 历史播放器;外部播放器可通过 Manifest 元数据主动申请接入。
本仓库的 SCOPE 使用 LSPosed 模块仓库要求的 JSON 数组格式:
["system", "com.salt.music", "ink.trantor.coneplayer", "ink.trantor.coneplayer.gp", "com.android.systemui"]| 作用域 | 用途 |
|---|---|
system |
在 system_server 中扩展 OPlus 历史播放器判断。 |
com.salt.music |
Salt Player 歌词抓取与后台播放恢复。 |
ink.trantor.coneplayer |
ConePlayer 正式版歌词适配。 |
ink.trantor.coneplayer.gp |
ConePlayer Google Play 版歌词适配。 |
com.android.systemui |
锁屏歌词渲染、翻译按钮、媒体 action 与屏幕超时处理。 |
外部播放器仅通过公开 lyricInfo 协议接入歌词时,通常无需加入播放器作用域。若需要进入 OPlus 历史播放器栈,可在自身 AndroidManifest.xml 中声明:
<meta-data
android:name="io.github.andrealtb.lockscreenlyrics.OPLUS_MEDIA_HISTORY"
android:value="true" />该声明不会替播放器实现 MediaSession、媒体按键接收、后台服务启动或播放队列恢复。
- 从 Releases 下载 APK 并安装。
- 在 LSPosed 中启用模块,并确认推荐作用域包含
system、com.android.systemui和需要进程内适配的播放器。 - 重启设备,使 SystemUI、system_server 和播放器进程中的 Hook 完整加载。
QQ 音乐、网易云音乐/荣耀版、Apple Music、Poweramp、Spotify、汽水音乐、酷狗音乐/概念版需要额外安装 Release 中对应的 LyricProvider APK,并在 LSPosed 中为目标播放器单独启用该 Provider。Release 同时提供 LyricProvider-<tag>.zip,里面包含全部 Provider APK。Apple Music Provider 只输出逐字和翻译歌词,不输出背景人声或对唱格式歌词;Spotify Provider 当前仅支持原文歌词,暂不支持翻译。汽水音乐还需要在 LSP 管理器中为汽水音乐开启“还原内联钩子”:对列表中的应用清理 libart.so。
源码、完整接入协议和问题反馈:
Bridges timed lyrics from supported music players into the native ColorOS/OPlus lock-screen lyric UI, with word-level highlighting, translation controls, media-card integration, and playback recovery.
- Built-in compatibility adapters for Salt Player and ConePlayer.
- Public
MediaMetadata["lyricInfo"]protocol for self-integrating players without an APK dependency. - Optional LyricProvider APKs in Releases for QQ Music, NetEase Cloud Music/Honor, Apple Music, Poweramp, Spotify, QiShui Music, and KuGou Music/Concept. The Spotify Provider currently supports original lyrics only, without translations.
- Line-timed LRC, word-timed
rawLyric, translation detection, and stable repeated-line matching; three-line lyrics pan inside a fixed two-line viewport when line-timed pseudo word progress is disabled. - Compact dynamic lock-screen lyric layout with smoother translation toggles and AOD/highlight transition stabilization.
- Versioned lyric UI settings with four visual presets and a live preview, covering opacity, blur, scaling, glow, colors, motion, typography, alignment, row spacing, long-text browsing, and redraw caps; player translation defaults and guided opening-information cleanup use dedicated secondary pages.
- A generic lyric transaction layer prevents stale asynchronous callbacks from binding across tracks, including sequences that contain instrumentals or no-lyric tracks.
- Long Japanese and Chinese lyric lines wrap at Unicode character boundaries instead of being reduced to tiny text.
- Preserves the player's original media-action semantics and exposes translation only through OPlus Rule0, preventing previous/play-pause/next slot corruption.
- Restores Salt Player playback from the ColorOS history media card after the app has fully stopped.
- Restores ConePlayer lyrics from selected audio-track metadata during background playback resumption.
- Automatically accepts built-in adapters into OPlus media history; external players may opt in through manifest metadata.
The repository SCOPE follows the required JSON-array format:
["system", "com.salt.music", "ink.trantor.coneplayer", "ink.trantor.coneplayer.gp", "com.android.systemui"]| Scope | Purpose |
|---|---|
system |
Extends OPlus media-history decisions in system_server. |
com.salt.music |
Salt Player lyric capture and background playback recovery. |
ink.trantor.coneplayer |
ConePlayer standard-package lyric adapter. |
ink.trantor.coneplayer.gp |
ConePlayer Google Play-package lyric adapter. |
com.android.systemui |
Lock-screen rendering, translation action, media actions, and screen-timeout handling. |
External players that only publish the public lyricInfo payload usually do not need player-process scope. To opt into OPlus media history, an external player may declare:
<meta-data
android:name="io.github.andrealtb.lockscreenlyrics.OPLUS_MEDIA_HISTORY"
android:value="true" />This declaration does not replace the player's own MediaSession, media-button receiver, playback service, or queue-restoration implementation.
- Download and install the APK from Releases.
- Enable the module in LSPosed and confirm that
system,com.android.systemui, and the required built-in player scopes are selected. - Reboot the device so the SystemUI, system_server, and player-process hooks are loaded.
QQ Music, NetEase Cloud Music/Honor, Apple Music, Poweramp, Spotify, QiShui Music, and KuGou Music/Concept require the matching LyricProvider APK from the same release, enabled separately for the target player in LSPosed. Releases also include LyricProvider-<tag>.zip with every provider APK. The Apple Music Provider only outputs word-timed and translated lyrics; background vocals and duet lanes are excluded. The Spotify Provider currently supports original lyrics only; translations are not supported. QiShui Music also requires LSPosed Manager's "Restore inline hooks" option for QiShui Music so libart.so is cleaned for listed apps.
Source, integration documentation, and support:
