v3.0.0 is a major stability and performance update for AOD rendering, track handoff, ConePlayer car lyrics, and every bundled LyricProvider Bridge. It reduces stale or missing lyrics during rapid switching, scopes a rare SystemUI RecyclerView crash guard to the official lyric surface, and cuts hot-path allocation and diagnostic log volume. Release assets include LyricProvider-v3.0.0.zip for installing all 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. - Compact dynamic lock-screen lyric layout with smoother translation toggles and AOD/highlight transition stabilization.
- Lyric UI settings for line-timed pseudo word progress, translation progress, scroll scaling, inactive-line blur, and lock-screen keep-awake duration.
- 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:
