# com.aodianjun.hyperglow.cnplus
**Repository Path**: Mr__Pit/com.aodianjun.hyperglow.cnplus
## Basic Information
- **Project Name**: com.aodianjun.hyperglow.cnplus
- **Description**: HyperGlow CN+ — Animated lock screen and always-on display lyrics for HyperOS 3, with support for Chinese music apps.
- **Primary Language**: Kotlin
- **License**: GPL-3.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-10-14
- **Last Updated**: 2026-10-24
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
---
# English / 英文
## Features
- Lyrics on the HyperOS lock screen and AOD from multiple sources:
- **Spicy EX** (Spotify, international).
- **Lyricon** (popular Chinese music apps — QQ Music, NetEase Cloud Music, Kugou, etc.).
- **SuperLyric** (active-line push via Binder, works with many music apps).
- **LyricInfo** (injects elrc/lrc lyrics into the media session metadata of supported apps).
- Line-, word- and syllable-synchronized karaoke, including the **BetterLyrics** word animation
preset (long syllables light up and scale up with a glow, unplayed syllables sink and rise as
they are sung) and per-word karaoke for the auxiliary line.
- Duet lyrics: when a second singing line overlaps the main one, both are drawn side by side, each
with its own word-by-word sweep — with optional (男)/(女)/(合) side detection and section-marker
stripping.
- Auxiliary text: an optional second lyric line rendered as auxiliary text (a four-row layout),
toggled independently for the lock screen and AOD.
- Song info and artwork: choose and order title/artist/album, set a per-slot separator, and show
the current track's album art (square, or circular with rotation).
- Per-document lyric time offset (±5 s in 50 ms steps), applied to line selection and the
word-by-word sweep alike.
- Transliteration, translation and romaji where the source provides them (Spicy EX Full,
Lyricon, LyricInfo translation/romaji lanes).
- Configurable line-transition animations: 30 built-in exit/enter presets (fade, slide, zoom,
flip, rotate, etc.) plus an Auto mode that follows the lyric source, with Slowest/Slow/Normal/Fast/Fastest
speed tiers.
- HyperLyric-compatible plugins, with an in-app lyric-enhancement section (plugin settings) and
plugin cache management; the plugin chain covers every lyrics source, full-song and
line-by-line alike. Four official plugins ship as separate ZIPs from the
[`plugins` release](https://github.com/Xposed-Modules-Repo/com.aodianjun.hyperglow.cnplus/releases/tag/plugins):
**lyricfetch** (online lyrics: NetEase word-level, QQ, LRCLIB), **scriptconvert**
(Simplified ⇄ Traditional), **amll-ttml** (AMLL TTML word-level lyrics with duet, harmony and
translation) and **ai-translation** (any OpenAI-compatible endpoint).
- AOD clock placement, anchored clock positioning and burn-in movement.
- AOD lyrics rotate with the device (landscape/reverse), optionally hiding the stock AOD
content in landscape.
- Landscape full-screen lyrics, centred on the display with a configurable safe-area inset.
- Appearance settings: theme colour (default/dynamic/custom), background image with dimming and
blur, glass (translucent) top bar, cards and navigation, text colour and font.
- AOD brightness boost, a render frame-rate cap, and a power-saving frame-reduction toggle for
hot or low-battery states.
- Keep AOD active while lyrics are visible (configurable duration, up to indefinite).
- Keep the lock screen awake while music is playing.
- Raise to show AOD instead of the full lock screen.
- Built-in diagnostics (guided capture, locally generated report ready for a GitHub issue)
and settings backup/restore.
## Requirements
- Rooted HyperOS 3.
- [LSPosed](https://github.com/LSPosed/LSPosed).
- At least one lyrics source:
- Spotify with Spicy EX Lite or Full (**Publish lyrics to HyperGlow** enabled).
- A Chinese music app with [Lyricon](https://github.com/tomakino/lyricon) active in SystemUI.
- [SuperLyric](https://github.com/HChenX/SuperLyric) active in the system service.
- [LyricInfo](https://github.com/limczhh/LyricInfo) active in the music app, plus notification access for HyperGlow.
## Install
APK from [Releases](https://github.com/aodianjun/com.aodianjun.hyperglow.cnplus/releases).
> [!TIP]
> Also available on the [LSPosed Modules Repository](https://modules.lsposed.org) under
> **HyperGlow CN+** (`com.aodianjun.hyperglow.cnplus`), which tracks each release automatically.
> [!TIP]
> Optional plugins (online lyrics lookup, Simplified ⇄ Traditional conversion, AMLL TTML
> word-level lyrics, AI translation) are distributed as separate ZIPs on the
> [`plugins` release](https://github.com/Xposed-Modules-Repo/com.aodianjun.hyperglow.cnplus/releases/tag/plugins);
> install them in-app from the plugin management page (**Install from local ZIP**).
1. Enable HyperGlow in LSPosed.
2. Enable your lyrics source:
- **Spotify**: enable Spicy EX for Spotify in LSPosed, then enable **Publish lyrics to HyperGlow** in Spicy EX.
- **Chinese music apps**: enable [Lyricon](https://github.com/tomakino/lyricon) for SystemUI in LSPosed.
- **SuperLyric**: enable [SuperLyric](https://github.com/HChenX/SuperLyric) in LSPosed.
- **LyricInfo**: enable [LyricInfo](https://github.com/limczhh/LyricInfo) for the music app in LSPosed, and grant HyperGlow notification access.
3. Set HyperGlow battery usage to **No restrictions**.
> [!NOTE]
> Tested on Redmi K80 Pro.
> Will eat battery.
> `Raise to show AOD` requires the system **Raise to wake** option enabled.
> [!TIP]
> If lyrics, the capability report or AOD behavior look wrong, check [FAQ.md](FAQ.md) first.
## Build
JDK 21 and an Android SDK are required. No credentials or accounts are needed — every dependency
resolves from Google's Maven repository and Maven Central.
```sh
JAVA_HOME=/path/to/jdk21 ./gradlew :app:testDebugUnitTest :app:assembleDebug
```
That produces an installable debug APK under `app/build/outputs/apk/debug/`. Released builds are
signed with a private key that is not in this repository, so a build from source will not share the
signing lineage of the published releases: installing your own build over a release requires
uninstalling first, and the LSPosed module has to be re-enabled afterwards.
## Contributing
Read the specs in [`docs/`](docs/) before changing behavior — `ARCHITECTURE.md` for process
boundaries and trust, `LOCKSCREEN_AOD_BEHAVIOR_SPEC.md` for lockscreen/AOD visibility, lifetime, and
power rules, `STYLE_GUIDE.md` for conventions. They are the contract; code that contradicts them is
a bug even when it works.
This repository is generated from a private working repository, so a few things are worth knowing
before opening a pull request:
- Changes are limited to what exists here. A pull request that adds files outside this tree cannot
be integrated as written.
- `README.md`, `FAQ.md`, and `.gitignore` are generated. Edits to them are lost; raise the change in
an issue instead.
- Every accepted change is verified on the maintainer's device before release. Unit tests passing is
necessary, not sufficient — anything touching SystemUI hooks, AOD power, or geometry needs
hardware verification that cannot run in CI.
- Large or architectural changes are worth discussing in an issue first, so the design can be
checked against the specs before you build it.
## Acknowledgements
- [amarinne/hyperglow](https://github.com/amarinne/hyperglow) — the upstream project this
repackaged CN+ fork is based on.
- [limczhh/HyperLyric](https://github.com/limczhh/HyperLyric) — the referenced project HyperGlow
adapts code from, which this fork inherits.
- [Andrea-lyz/ColorOS-Live-Lyrics-Bridge](https://github.com/Andrea-lyz/ColorOS-Live-Lyrics-Bridge) —
several hardening pieces in the lyric ingestion path (translation lane alignment, word-timing
repair, text sanitization, opening-metadata cleanup) are adapted from its implementation.
- [amll-dev/applemusic-like-lyrics](https://github.com/amll-dev/applemusic-like-lyrics) — the
lyric timeline-normalization pass (word-timing alignment, overlap arbitration) follows ideas
and thresholds published by AMLL; ideas and thresholds only, no code from its AGPL codebase
is used.
- [jayfunc/BetterLyrics](https://github.com/jayfunc/BetterLyrics) — the word-by-word playback
effects of the `BetterLyrics` word-animation preset (long-syllable scale and glow, the sink and
rise float rhythm of unplayed vs. sung syllables, per-word-block highlight timing) follow its
LyricsAnimator / LyricsEffectSettings thresholds and feel; ideas and parameters only, no code
from its GPL-3.0 C#/Win2D codebase is used.
- [LuckyPray/DexKit](https://github.com/LuckyPray/DexKit) — runtime Dex symbol resolution behind
the capability probes.
- [miuix](https://github.com/compose-miuix-ui/miuix) — the Compose UI library the entire settings
interface is built with.
- The lyrics sources that make this possible:
[Spicy EX](https://github.com/amarinne/spicy-ex), [Lyricon](https://github.com/tomakino/lyricon),
[SuperLyric](https://github.com/HChenX/SuperLyric), and
[LyricInfo](https://github.com/limczhh/LyricInfo).
- [LSPosed](https://github.com/LSPosed/LSPosed) and libxposed for the Xposed runtime.
## License
[GPL-3.0](LICENSE). See [NOTICE](NOTICE).
---
# 中文 / Chinese
## 功能特性
- 通过多种来源在 HyperOS 锁屏与 AOD 上显示歌词:
- **Spicy EX**(国际版,Spotify)。
- **Lyricon**(热门国内音乐软件 —— QQ音乐、网易云音乐、酷狗音乐等)。
- **SuperLyric**(通过 Binder 实时推送当前歌词行,支持众多音乐软件)。
- **LyricInfo**(向受支持应用的媒体会话元数据注入 elrc/lrc 歌词)。
- 支持逐行、逐词、逐音节同步的卡拉OK,含 **BetterLyrics** 逐字动画档(长音节整块亮起并放大、带辉光;未唱字下沉、唱到后上浮)与辅助行的逐字效果。
- 对唱歌词:与主行重叠的第二条唱词行并排显示、各画各的逐字扫光,可选自动识别(男)/(女)/(合)并剥离段落标记。
- 辅助文字:可选的第二行歌词以辅助文字形态绘制(四行呈现),锁屏与息屏各自独立开关。
- 歌曲信息与歌曲图片:歌名/歌手/专辑可选可排序、分隔符逐槽设置,并可显示当前曲目的专辑图(方形,或可旋转的圆形)。
- 文档级歌词时间偏移(±5 秒、50ms 档),选行与逐字扫光一并生效。
- 音译、翻译与罗马音随歌词源提供(Spicy EX Full、Lyricon、LyricInfo 的翻译/罗马音 lane)。
- 可配置的换行动画:内置 30 种退场/进场预设(淡入淡出、滑动、缩放、翻转、旋转等),另有跟随歌词源的 Auto 档,速率支持 Slowest/Slow/Normal/Fast/Fastest 五档。
- HyperLyric 兼容插件,应用内提供「歌词增强」(插件设置)板块与插件缓存管理;插件链覆盖全部歌词源(整首与逐行皆可)。五个官方插件以独立 ZIP 从 [`plugins` 发行](https://github.com/Xposed-Modules-Repo/com.aodianjun.hyperglow.cnplus/releases/tag/plugins) 下载:**lyricfetch**(在线取词:网易云逐字 / QQ / LRCLIB)、**scriptconvert**(简 ⇄ 繁)、**amll-ttml**(AMLL TTML 逐字歌词,含对唱/和声/翻译)、**ai-translation**(任意 OpenAI 兼容接口)、**ai-translation-words**(AI 逐字翻译:把译文按原词的逐字时间对齐成词级片段,配合「辅助文字逐字效果」让翻译辅助行随唱逐字点亮)。
- AOD 时钟位置、锚定式时钟定位与防烧屏位移。
- AOD 歌词跟随设备横竖屏旋转(横屏/反向横屏),可选隐藏横屏下的系统息屏内容。
- 横屏全屏歌词:整块在屏幕上居中,并可设置安全区内边距。
- 外观设置:主题色(默认/动态取色/自定义)、背景图与压暗/模糊、玻璃化(半透明)顶栏/卡片/导航、文字颜色与字体。
- AOD 亮度增强、渲染刷新率上限,以及发热/低电量时的省电降帧开关。
- 歌词显示时保持 AOD 常亮(时长可配置,最长不限)。
- 播放音乐时保持锁屏常亮。
- 拿起手机显示 AOD 而非完整锁屏。
- 内置诊断(引导采集、本地生成报告并可一键组装 GitHub issue)与设置备份/恢复。
## 环境要求
- 已 root 的 HyperOS 3。
- [LSPosed](https://github.com/LSPosed/LSPosed)。
- 至少一个歌词源:
- Spotify + Spicy EX Lite 或 Full(需开启 **将歌词发布到 HyperGlow**)。
- 国内音乐软件 + [Lyricon](https://github.com/tomakino/lyricon)(在 SystemUI 作用域启用)。
- [SuperLyric](https://github.com/HChenX/SuperLyric)(在系统服务中启用)。
- [LyricInfo](https://github.com/limczhh/LyricInfo)(在音乐软件中启用,并为 HyperGlow 授予通知使用权)。
## 安装
从 [Releases](https://github.com/aodianjun/com.aodianjun.hyperglow.cnplus/releases) 下载 APK。
> [!TIP]
> 也已在 [LSPosed 模块仓库](https://modules.lsposed.org)上架(**HyperGlow CN+**,包名
> `com.aodianjun.hyperglow.cnplus`),会自动同步每个新版本。
> [!TIP]
> 可选插件(在线取词、简 ⇄ 繁转换、AMLL TTML 逐字歌词、AI 翻译、AI 逐字翻译)以独立 ZIP 发布在
> [`plugins` 发行](https://github.com/Xposed-Modules-Repo/com.aodianjun.hyperglow.cnplus/releases/tag/plugins),
> 在应用内「插件管理」页 **从本地 ZIP 安装** 即可。
1. 在 LSPosed 中启用 HyperGlow。
2. 启用你的歌词源:
- **Spotify**:在 LSPosed 中为 Spotify 启用 Spicy EX,然后在 Spicy EX 中开启 **将歌词发布到 HyperGlow**。
- **国内音乐软件**:在 LSPosed 中为 SystemUI 启用 [Lyricon](https://github.com/tomakino/lyricon)。
- **SuperLyric**:在 LSPosed 中启用 [SuperLyric](https://github.com/HChenX/SuperLyric)。
- **LyricInfo**:在 LSPosed 中为音乐软件启用 [LyricInfo](https://github.com/limczhh/LyricInfo),并为 HyperGlow 授予通知使用权。
3. 将 HyperGlow 的电池使用设置为 **无限制**。
> [!NOTE]
> 已在 Redmi K80 Pro 上测试。
> 会比较耗电。
> `拿起显示 AOD` 需要系统开启 **抬起唤醒** 选项。
> [!TIP]
> 如果歌词、能力报告或 AOD 行为异常,先查阅 [FAQ.md](FAQ.md)。
## 构建
需要 JDK 21 与 Android SDK。无需任何凭据或账号 —— 所有依赖均从 Google 的 Maven 仓库和 Maven Central 解析。
```sh
JAVA_HOME=/path/to/jdk21 ./gradlew :app:testDebugUnitTest :app:assembleDebug
```
该命令会在 `app/build/outputs/apk/debug/` 下生成可安装的调试 APK。正式发布版使用不在本仓库中的私钥签名,因此从源码构建不会与已发布版本共享签名链:用自己构建的版本覆盖安装正式版需要先卸载,之后还需要在 LSPosed 中重新启用模块。
## 参与贡献
在改动行为之前,请阅读 [`docs/`](docs/) 中的规范 —— `ARCHITECTURE.md` 说明进程边界与信任、`LOCKSCREEN_AOD_BEHAVIOR_SPEC.md` 说明锁屏/AOD 的可见性、生命周期与电源规则、`STYLE_GUIDE.md` 说明代码约定。它们是约定;与它们相矛盾的代码即使能用也是 bug。
本仓库由私有工作仓库生成,提交 Pull Request 前有几件事值得了解:
- 改动仅限于本仓库已有的内容。新增超出本目录文件的 PR 无法按原样合并。
- `README.md`、`FAQ.md` 和 `.gitignore` 为自动生成,对它们的修改会被丢弃;请改为在 issue 中提出。
- 每个被接受的改动在发布前都会在维护者的设备上验证。单元测试通过是必要条件而非充分条件 —— 任何涉及 SystemUI 挂钩、AOD 电源或几何布局的改动都需要无法在 CI 中运行的硬件验证。
- 大型或架构性改动值得先在 issue 中讨论,以便在动手前对照规范检查设计方案。
## 致谢
- [amarinne/hyperglow](https://github.com/amarinne/hyperglow) —— 本 CN+ 重打包版所基于的上游项目。
- [limczhh/HyperLyric](https://github.com/limczhh/HyperLyric) —— HyperGlow 改编借鉴其代码的参考项目,本 fork 沿用了该代码。
- [Andrea-lyz/ColorOS-Live-Lyrics-Bridge](https://github.com/Andrea-lyz/ColorOS-Live-Lyrics-Bridge) —— 歌词摄取路径的多项加固(翻译 lane 对齐、词级时间轴修复、文本清洗、开头元数据清理)改编自其实现。
- [amll-dev/applemusic-like-lyrics](https://github.com/amll-dev/applemusic-like-lyrics) —— 歌词时间轴规整(词级对齐、重叠仲裁)借鉴了 AMLL 公开的思路与阈值;仅借鉴思路与阈值,未使用其(AGPL)代码。
- [jayfunc/BetterLyrics](https://github.com/jayfunc/BetterLyrics) —— 「BetterLyrics」逐字动画档的播放效果(长音节放大与辉光、未唱音节下沉与唱到上浮的浮动节奏、词块级高亮节奏)参考了其 LyricsAnimator / LyricsEffectSettings 的阈值与观感;仅借鉴思路与参数,未使用其(GPL-3.0)代码。
- [LuckyPray/DexKit](https://github.com/LuckyPray/DexKit) —— 能力探测背后的运行期 Dex 符号解析。
- [miuix](https://github.com/compose-miuix-ui/miuix) —— 整个设置界面所基于的 Compose UI 组件库。
- 让这一切成为可能的歌词源:[Spicy EX](https://github.com/amarinne/spicy-ex)、
[Lyricon](https://github.com/tomakino/lyricon)、[SuperLyric](https://github.com/HChenX/SuperLyric)
与 [LyricInfo](https://github.com/limczhh/LyricInfo)。
- [LSPosed](https://github.com/LSPosed/LSPosed) 与 libxposed 提供的 Xposed 运行时。
## 许可证
[GPL-3.0](LICENSE)。参见 [NOTICE](NOTICE)。