HyperGlow CN+

Animated lock screen and always-on display lyrics for HyperOS 3, with support for Chinese music apps. HyperOS 3 的锁屏与息屏(AOD)歌词动画,支持国内音乐软件。

License GPL-3.0 Android Support Miuix UI libxposed Downloads

QQ Group

蝴蝶 · 洛天依 Official —— 锁屏 / 息屏 AOD / 横屏 AOD
蝴蝶 · 锁屏逐字歌词 蝴蝶 · 息屏 AOD 逐字歌词 蝴蝶 · 横屏 AOD 全屏化居中

Take Me Hand · DAISHI DANCE —— 锁屏 / 息屏 AOD / 横屏 AOD
Take Me Hand · 锁屏逐字歌词 Take Me Hand · 息屏 AOD 逐字歌词 Take Me Hand · 横屏 AOD 全屏化居中

Requires root, LSPosed and a lyrics source (Spicy EX, Lyricon, SuperLyric or LyricInfo). 需要 root、LSPosed 以及一个歌词源(Spicy EX、Lyricon、SuperLyric 或 LyricInfo)。


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: 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.
  • At least one lyrics source:
    • Spotify with Spicy EX Lite or Full (Publish lyrics to HyperGlow enabled).
    • A Chinese music app with Lyricon active in SystemUI.
    • SuperLyric active in the system service.
    • LyricInfo active in the music app, plus notification access for HyperGlow.

Install

APK from Releases.

Tip

Also available on the LSPosed Modules Repository 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; 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 for SystemUI in LSPosed.
    • SuperLyric: enable SuperLyric in LSPosed.
    • LyricInfo: enable 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 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.

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/ 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 — the upstream project this repackaged CN+ fork is based on.
  • limczhh/HyperLyric — the referenced project HyperGlow adapts code from, which this fork inherits.
  • 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 — 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 — 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 — runtime Dex symbol resolution behind the capability probes.
  • miuix — the Compose UI library the entire settings interface is built with.
  • The lyrics sources that make this possible: Spicy EX, Lyricon, SuperLyric, and LyricInfo.
  • LSPosed and libxposed for the Xposed runtime.

License

GPL-3.0. See 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 发行 下载:lyricfetch(在线取词:网易云逐字 / QQ / LRCLIB)、scriptconvert(简 ⇄ 繁)、amll-ttml(AMLL TTML 逐字歌词,含对唱/和声/翻译)、ai-translation(任意 OpenAI 兼容接口)。

  • AOD 时钟位置、锚定式时钟定位与防烧屏位移。

  • AOD 歌词跟随设备横竖屏旋转(横屏/反向横屏),可选隐藏横屏下的系统息屏内容。

  • 横屏全屏歌词:整块在屏幕上居中,并可设置安全区内边距。

  • 外观设置:主题色(默认/动态取色/自定义)、背景图与压暗/模糊、玻璃化(半透明)顶栏/卡片/导航、文字颜色与字体。

  • AOD 亮度增强、渲染刷新率上限,以及发热/低电量时的省电降帧开关。

  • 歌词显示时保持 AOD 常亮(时长可配置,最长不限)。

  • 播放音乐时保持锁屏常亮。

  • 拿起手机显示 AOD 而非完整锁屏。

  • 内置诊断(引导采集、本地生成报告并可一键组装 GitHub issue)与设置备份/恢复。

环境要求

  • 已 root 的 HyperOS 3。
  • LSPosed。
  • 至少一个歌词源:
    • Spotify + Spicy EX Lite 或 Full(需开启 将歌词发布到 HyperGlow)。
    • 国内音乐软件 + Lyricon(在 SystemUI 作用域启用)。
    • SuperLyric(在系统服务中启用)。
    • LyricInfo(在音乐软件中启用,并为 HyperGlow 授予通知使用权)。

安装

从 Releases 下载 APK。

Tip

也已在 LSPosed 模块仓库上架(HyperGlow CN+,包名 com.aodianjun.hyperglow.cnplus),会自动同步每个新版本。

Tip

可选插件(在线取词、简 ⇄ 繁转换、AMLL TTML 逐字歌词、AI 翻译)以独立 ZIP 发布在 plugins 发行, 在应用内「插件管理」页 从本地 ZIP 安装 即可。

  1. 在 LSPosed 中启用 HyperGlow。
  2. 启用你的歌词源:
    • Spotify:在 LSPosed 中为 Spotify 启用 Spicy EX,然后在 Spicy EX 中开启 将歌词发布到 HyperGlow。
    • 国内音乐软件:在 LSPosed 中为 SystemUI 启用 Lyricon。
    • SuperLyric:在 LSPosed 中启用 SuperLyric。
    • LyricInfo:在 LSPosed 中为音乐软件启用 LyricInfo,并为 HyperGlow 授予通知使用权。
  3. 将 HyperGlow 的电池使用设置为 无限制。

Note

已在 Redmi K80 Pro 上测试。 会比较耗电。 拿起显示 AOD 需要系统开启 抬起唤醒 选项。

Tip

如果歌词、能力报告或 AOD 行为异常,先查阅 FAQ.md。

构建

需要 JDK 21 与 Android SDK。无需任何凭据或账号 —— 所有依赖均从 Google 的 Maven 仓库和 Maven Central 解析。

JAVA_HOME=/path/to/jdk21 ./gradlew :app:testDebugUnitTest :app:assembleDebug

该命令会在 app/build/outputs/apk/debug/ 下生成可安装的调试 APK。正式发布版使用不在本仓库中的私钥签名,因此从源码构建不会与已发布版本共享签名链:用自己构建的版本覆盖安装正式版需要先卸载,之后还需要在 LSPosed 中重新启用模块。

参与贡献

在改动行为之前,请阅读 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 —— 本 CN+ 重打包版所基于的上游项目。
  • limczhh/HyperLyric —— HyperGlow 改编借鉴其代码的参考项目,本 fork 沿用了该代码。
  • Andrea-lyz/ColorOS-Live-Lyrics-Bridge —— 歌词摄取路径的多项加固(翻译 lane 对齐、词级时间轴修复、文本清洗、开头元数据清理)改编自其实现。
  • amll-dev/applemusic-like-lyrics —— 歌词时间轴规整(词级对齐、重叠仲裁)借鉴了 AMLL 公开的思路与阈值;仅借鉴思路与阈值,未使用其(AGPL)代码。
  • jayfunc/BetterLyrics —— 「BetterLyrics」逐字动画档的播放效果(长音节放大与辉光、未唱音节下沉与唱到上浮的浮动节奏、词块级高亮节奏)参考了其 LyricsAnimator / LyricsEffectSettings 的阈值与观感;仅借鉴思路与参数,未使用其(GPL-3.0)代码。
  • LuckyPray/DexKit —— 能力探测背后的运行期 Dex 符号解析。
  • miuix —— 整个设置界面所基于的 Compose UI 组件库。
  • 让这一切成为可能的歌词源:Spicy EX、 Lyricon、SuperLyric 与 LyricInfo。
  • LSPosed 与 libxposed 提供的 Xposed 运行时。

许可证

GPL-3.0。参见 NOTICE。

Releases

10/6/2026, 5:47:48 PM

安装包用途说明

  • hyperglow-cnplus-release-v0.3.166-193.apk(正式版):正常使用请安装此版本。正式签名、R8 压缩,适合日常安装使用。
  • hyperglow-cnplus-debug-v0.3.166-193.apk(调试版):提 issue 反馈问题时请安装此版本,可提供详细诊断日志辅助排查。调试签名,仅用于测试与问题排查,请勿作为日常版本长期安装。

更新日志 · v0.3.166

修复

  • AOD / 锁屏歌词空白(多根因合并):修掉歌词源未上报媒体时长(durationMs=0)或行尾/逐词结束时间超出时长时,快照校验失败被静默降级为不显示;插件返回空文本不再覆盖非空活动行;状态协议拒收面过严(UTF-16 规整、超预算时仅丢弃逐词/罗马音等增强条目);以及歌词 surface 构建时省电监控初始化 NPE 中断挂载,导致每次息屏歌词空白。
  • 歌词源不再"卡死":修掉 Lyricon 冷启动/重连后时间戳从 0 开始、整条时间轴被平移的问题;新增歌曲侧看门狗(位置通道仍在推送但歌曲通道静默丢失时歌词不再冻结);修掉回调链静默停止、看门狗盲区与仲裁器死锁导致的「暂无曲目」永不恢复;切歌不再被误判为重同步(此前会导致整首无歌词)。
  • AOD 时钟不再被系统挤动:系统时钟下移时对时钟锚点防抖、时钟冻结时按已应用 Y 固定视图、时钟 pin 在控制器重建后仍保持,锚定模式下歌词不再被持续下移锁死。三条根因分别是灭屏抖动清空锚点、写回未落到效果层、锚点播种未基于未位移基准。
  • 息屏超级岛残留:设备非交互期间把岛窗口根视图强制 GONE 并有界周期复断言,唤醒后按台账恢复;顺带修掉 View.GONE 常量被误钉为 2(正确值 8)导致守卫失效、岛持续可见并闪烁的问题。
  • 横屏与横屏全屏:修掉「横屏 + 横屏全屏」下 AOD 整屏空白(Canvas 变换顺序把平移量放大 1.7 倍、把逻辑框推出画布)、歌词被放大越出画布被裁、长行被推出可视区、歌词与元数据整块偏心(约 54px)等问题;横屏非全屏永不放大,画布按中心交换宽高并整体钳入屏幕。
  • 翻译 / 音译偶发丢失:翻译 lane 对齐由精确相等放宽为 ±120ms 最近行匹配(带最近主行与重复文本双护栏),并扩充五个翻译键别名以兼容更多播放器;只带词级译文(translationWords)的源不再被静默丢弃(emit / 整首快照 / 插件桥三处兜底取文);SuperLyric 逐行流回退时,下一行的音标/翻译由插件富化层回填,四行呈现的第四行不再缺失。
  • 自定义字体实机不加载:字体文件位于应用私有目录、SystemUI 读不到,导致息屏/锁屏永远回退字体;现取流副本落到宿主进程可写缓存并按版本自动失效清理。同时修掉 noto-sc / custom / custom:<id> 令牌被归一化钳成 spotify、非幂等改写致整帧快照被拒收。
  • 第二行辅助文字被读成"第二条主行":辅助字号按有效主行字号等比封顶(不超过约 0.62 倍),不再被可读性下限顶到接近主行大小;换行动画中辅助行不再随第一行退场再入场,而与下一行同属内容延续组、随晋级平移到新主行的辅助槽位。
  • 词距与超宽词换行:插件词表缺原文区间时不再回退固定 8dp 兜底(此前词距随渲染路径变化、换行点比预览早、晋级前后跳变),改按词文本在行文本中顺序定位补全、词距取原文分隔符实测宽(此类行的注音同时恢复显示);单词超过可用宽时先按字符切分(含中文避头尾)再走既有换行路径,修掉整行超宽被画布两端裁掉。
  • 换行动画肉眼跳变:真机逐帧定位到三处——MIUI doze 冻结 SystemUI 使歌词状态批量投递、过渡进度按批跳进;位移段峰值速度超出 60fps 单帧上限;起步首帧几何不连续且首帧晚到被一帧跳进。现位置采样限速(平滑位置每帧最多按播放速率前进)、位移段时长按距离与速度上限、起点几何在两槽基线间线性插值并在越过退场段时重锚,旧账补播不再一帧硬切。
  • 占位符与逐字词窗:修掉占位符 🎶 被按 UTF-16 单码元劈成孤立代理项、显示成方框(改为按码点切分,歌词里的 emoji 同样受益);修掉渐变档下源自带行级标记让真实词窗被整条忽略——带真实词窗的行现在在所有非 Minimal 档位都走逐字渲染。
  • 首选源断连时暂停的歌曲不再清屏:回退与选源共用同一故障谓词,并新增冻结暂停兜底档(先取健康候选,再取首个带内容的冻结暂停候选;空态与 stale-playing 仍跳过,冻结行绝不压过在播活源)。
  • 时间戳处理健壮性:插件链合并收尾对合并后的文档跑同一套行窗/词窗归一(词窗超出行窗扩为并集、行窗远超可唱估时且词窗可信时向词对齐);ElrcParser 时间戳语法对齐 LRC/SPL 标准,[mm:ss](省略毫秒)与 4–6 位毫秒不再整行丢弃、词标记不再漏进歌词正文。
  • 预览与实机不一致:预览换算与实机同源(字号、副文本/元数据透明度、取色与卡片色、对齐、字体解析不再静默回退),并补齐文字动画档位、注音绘制与歌词进度四档;演示快照携带逐字时间戳,无实时歌词时也能看出逐字效果;暂停后预览不再停在暂停前那句;切换息屏/锁屏分段时预览立即刷新。
  • 插件(独立发行):amll-ttml 标题带括号后缀时取词失效——搜索原文标题导致 AMLL 库 0 结果、且负缓存写进规范化键毒化同曲干净标题(改为三变体按序搜索 + 缓存格式升级 + 传输失败不写负缓存);lyricfetch 缓存键含时长导致一首歌堆几十条缓存(宿主对逐行源上报的时长是当前行的结束时间;键去掉时长,时长仍参与候选打分与硬否决)。
  • 界面细节:百分号(%)显示、暗色模式状态卡配色、弹窗内容不可滚动与旋转重建后弹窗状态丢失、返回按钮缺无障碍描述、关于页帮助/更新日志/贡献者/开源许可四屏无返回处理直接退出应用、主页统计卡与息屏外观页底部卡未接入玻璃化、歌词源弹窗过期文案等。

新增功能

  • 插件生态:插件管理页新增「歌词增强」板块(列出所有提供歌词处理能力的插件并可进入其设置页)与「插件缓存管理」页(查看条目大小/更新时间、删除单条、清空全部),插件页新增「下载插件」入口直达插件发行页。新增官方插件 amll-ttml(AMLL TTML DataBase 逐字歌词:逐字/翻译/音译/和声/对唱,歌词 API 地址可配)与 ai-translation(任意 OpenAI 兼容接口的 AI 歌词翻译,按曲目缓存 30 天);插件以独立 ZIP 发行,不在主程序内。
  • BetterLyrics 逐字效果:新增「BetterLyrics」逐字动画档——长音节(≥700ms)整块按已唱色亮起、放大 1.15 并带辉光,其余音节保留词内自左向右扫光;行级歌词源(普通 LRC)此前只走整块扫光,现按字符几何宽度合成逐字时间窗,未唱字下沉、唱到后上浮,这些效果在行级源上同样生效。
  • 换行动画可配置:外观设置新增「换行动画」,提供 跟随源 / 淡入上移 / 交叉淡化 / 上滑 / 左滑 / 缩放 / 无 七种模式(默认「淡入上移」与历史效果逐像素一致,预览与实机共用同一套帧配方);换行改为逐行三段式(退场 → 位移放大 → 进场),速率档位由 3 档扩到 5 档:Slowest 2.0× / Slow 1.5× / Normal 1.0× / Fast 0.6× / Fastest 0.4×。
  • 对唱与段落标记:新增「显示并发歌词(对唱)」——另一唱词行与主行播放窗口重叠 ≥1 秒时两行同显、各画各的逐字扫光,并发行跟随分侧左右(息屏与锁屏各自独立开关);新增「识别对唱标记」,自动识别(男)(女)(合)并左右分侧、同时剥离标记,也剥离(副歌)/(间奏)/(桥段)/(说唱)等段落标记。
  • 辅助文字体系:新增「显示第二行辅助文字」(每个曲面独立开关),形成 第一行歌词 / 第一行辅助文字 / 第二行歌词 / 第二行辅助文字 的四行呈现;新增「辅助文字逐字效果」,第一行辅助文字(音标/翻译)随歌词逐字点亮。
  • 歌曲信息与歌曲图片:歌曲信息内容(歌名/歌手/专辑)可选可排序、分隔符逐槽独立选择(换行或 · - | 、 /)、最多 3 行并计入高度预算;新增歌曲图片显示(专辑图,方形/圆形、圆形可旋转、可设定暂停时是否继续旋转、固定边长或自适应缩放)。
  • 歌词时间偏移:布局页新增文档级滑杆(±5 秒、50ms 档),正数延后、负数提前显示;选行与逐字扫光整体平移到「播放位置 − 偏移」的显示时间轴,播放中拖动即刻生效,息屏与锁屏同时生效。
  • AOD 亮度与帧率:新增 AOD 亮度增强设置;新增「渲染刷新率上限」(默认 60fps,可指定 Hz,随配置备份);未充电且电量 ≤15% 或设备过热时 AOD 自动降帧省电、恢复后回到正常帧率;新增「息屏省电降帧」开关(默认开启,关闭后画布始终按帧上限渲染)。
  • 横屏与横屏全屏:新增「息屏画布随设备旋转」(未显式设置旋转模式时按 auto 处理)与「横屏歌词全屏化」——横屏时整体旋转歌词画布布局、内容铺满整屏并居中;新增横屏安全边界滑杆(短边 0–20%,默认 6%),避免内容贴住圆角/挖孔。
  • 应用外观设置页:新增主题模式与主题颜色(默认/动态取色/自定义)、背景图片与遮罩强度、背景模糊、玻璃化半透明(顶栏/卡片/底部导航,控件颜色与不透明度可调)、文字颜色与字体、系统栏图标深浅;全部取色弹窗新增 8 色预设网格与颜色代码输入(#RGB / #RRGGBB / #AARRGGBB)。
  • 字体管理增强:自定义字体由单槽改为多槽(导入只新增不覆盖、重名自动编号、可逐个删除,历史单槽配置自动登记),按真实字体名显示并支持批量选择,字体选择对话框对每个候选实时渲染中英文样张。
  • 界面与导航:App 界面重构为 状态 / 设置 / App 设置 / 关于 四页,设置页按 息屏 / 锁屏 / 其他 分段并常驻可折叠实时预览;导航改用带返回栈的 miuix-nav,系统返回手势 1:1 跟手驱动转场,新增「预测性返回」开关与「返回触发阈值」(0–60%,仅作用于手势返回)。
  • 其他新增:配置备份/恢复(含歌词源、应用外观、诊断、界面语言与插件设置,旧备份缺键回落默认);诊断日志保留期限(1/3/7/15/30 天)与「清日志」;「重启挂钩进程」新增「HyperGlow 应用」与「歌词源(重连当前歌词源)」目标;「视频等非音乐音频不显示歌词」开关(默认开启,按播放器包名与会话声明的音频内容类型识别);「空档提前显示下一行」——前奏/间奏/行间空档不再显示 🎶 占位符,改为提前显示下一行(未唱状态),该行真正开始时直接开始逐字填充、不重播入场动画。

优化

  • 插件发布流水线:新增插件 ZIP 滚动预发行(tag plugins,每次 main 构建删除重建,四个插件 ZIP 始终对应最新提交),PR 上执行插件打包校验;插件打包脚本的 d8/android.jar 定位改为优先指定、缺失回落最新已装版本(顺带修掉两处构建脚本真 bug)。
  • 诊断与日志:插件系统全链路日志(安装/加载/处理器链/结果合并携带违例原因/管线跳过原因与耗时);停滞期 select: / fallback: 日志按结构签名去重并加 30 秒心跳;日志按 key 时间窗节流并报告期间抑制条数;诊断报告对私有存储路径脱敏;实机渲染模式诊断日志(animation / timed / words / glow / fill / lineSync);诊断 root 探测窗口 5s→15s、候选二进制扩到 7 个(含 KernelSU / APatch)。
  • 设置页与文案清理:移除两个「可调但永不生效」的色键(主歌词颜色、背景遮罩色),避免误导;重置入口归位、互斥提示补齐;新增字符串的多语言与翻译模板同步补齐。
  • 文档与规范:新增插件发布规范(PLUGIN_RELEASE_CONVENTIONS)、插件致谢与许可义务说明、上游同步(UPSTREAM_SYNC)与 LSPosed 推送(LSPOSED_PUSH)runbook。
  • 测试::app 单元测试 98 个测试类全部通过;插件单测 amll-ttml 31 个、ai-translation 30 个、lyricfetch 51 个;换行过渡相关新增单测 27 条。

Full Changelog: aodianjun/com.aodianjun.hyperglow.cnplus@109-0.3.82...193-0.3.166

9/6/2026, 11:35:16 PM

安装包用途说明

  • hyperglow-cnplus-release-v0.3.82-109.apk(正式版):正常使用请安装此版本。正式签名、R8 压缩,适合日常安装使用。
  • hyperglow-cnplus-debug-v0.3.82-109.apk(调试版):提 issue 反馈问题时请安装此版本,可提供详细诊断日志辅助排查。调试签名,仅用于测试与问题排查,请勿作为日常版本长期安装。

更新日志 (v0.3.82 / versionCode 109)

🌟 修复 AOD 切歌后整首无歌词(issue #11)

  • 根因(0.3.81 实机日志确认):网易云共享内存的位置不是逐帧写入,而是按 base 元组 + 墙钟 × 速度 公式续算,Doze 冻结的是 base 更新。切歌后写入端仍停在旧歌时间线上续算,位置持续动态越界递增(实测 487520ms → 528687ms,新歌时长仅 188718ms)。0.3.81 的越界钳制把每个越界值钳到歌尾并清空歌词行——整首歌 AOD 纯色背景无歌词,并伴随 60Hz capping 日志刷屏;亮屏/切歌/seek 唤醒写入端后才恢复。
  • 同一 bug 的另一种表现:旧歌比新歌短时,残留落在新歌时长内、被当成真实位置接受,歌词整段错位(显示在"偏移=旧歌时长"处的新歌歌词)。
  • 修复:
    • 切歌可信门控:切歌后首个真实位置必须 ≤ 切歌后墙钟 × 观测速率 + 10s 容差,否则视为旧时间线残留拒绝、从 0 外推(新歌正确推进到歌尾);首个可信值或 seek 后开门恢复正常追踪。上界速率由残留增量估计(残留与真实位置同速推进),1.25x~3x 倍速播放不受影响;冻结型残留记首值持续拒绝,防上界随墙钟增长后被误接受。
    • 越界值视为 stalled:超过歌长 +2s 容差的位置一律不可信,从最后可信基准外推到投影歌尾、再按既有语义稳定占位——取代 0.3.81 直接钳歌尾清行;小幅越界(元数据时长略小于实际音频)仍钳到歌尾;capping 日志去重消除刷屏。
    • 正常播放 / 暂停 / seek / 单曲循环行为不变(门控只作用于切歌后首个可信值之前),issue #3/#9/#10 的修复全部保持。
  • 新增回归测试:时长内残留拒绝与冻结残留、2x 速率跟踪、越界残留外推等;全部 554 个测试通过。

🔄 同步上游 hyperglow 更新(amarinne/hyperglow)

  • 中文歌拒绝错误的日语假名注音(上游 8422d78):数据源(网易云)常给中文歌词错误标注日语 furigana,显示出来既难看又误导。现在中文歌(zh / zh-Hant 等)检测到 ruby 注音含日语假名(平/片假名)时,拒绝显示注音和罗马音;日语歌的假名注音是正确数据,原样保留。文档语言标签从歌词数据贯通到投影层。
  • 版本锁定退役,新设备不再被误报"不支持"(上游 6216fdc):移除 SystemUI/AOD 版本号白名单门禁,改为按符号探测实际解析出的能力判断——有可用 surface 即"可用",UI 显示"n/16 个挂钩可用"计数而非旧的置信度标签。修复新 HyperOS 设备明明能跑却被显示为"不支持配置文件"、诊断报告误报 setup failed 的问题。本地实验模式覆写逻辑保持不变。
  • 诊断报告接受 "available" 状态(上游 c5b1ffa):与新状态机配套的校验放行,避免诊断报告被拒收。
  • fillEndMs 允许越过本行行尾(跨行填充是合法数据),渲染端钳制行窗口防止行级扫光越界。
  • 全部 564 个测试通过。

Full Changelog: aodianjun/com.aodianjun.hyperglow.cnplus@108-0.3.81...109-0.3.82

Assets

2

8/18/2026, 1:53:36 PM

安装包说明

  • hyperglow-cnplus-release-v0.3.70-89.apk(正式版):正常使用请安装此版本。
  • hyperglow-cnplus-debug-v0.3.70-89.apk(调试版):提 issue 反馈问题时请安装此版本,可提供详细诊断日志协助排查。调试签名,仅用于测试与问题反馈,请勿作为日常版本长期安装。

更新日志 (v0.3.70 / versionCode 89)

相比 v0.3.68(versionCode 85),含 v0.3.69 与 v0.3.70 两版变更

✨ 歌词发光效果(AOD 与预览统一)

  • 修复 AOD 发光效果与预览不一致:行级同步歌词(网易云 / QQ 音乐等常见源)此前被分发到旧的共享扫光路径(普通渐变、无光晕、无 dim 底色),完全绕过发光实现;现所有歌词源(行级 / 词级 / 无时序)统一走预览风格渲染管线
  • 复刻预览第一版发光方式:文字本身保持原色,光晕从文字背后透出,不再遮挡文字;解决发光层与文字层割裂感强、发光时文字看不清的问题
  • 修复开启发光后已唱 / 未唱无法区分:未唱文字固定 30% 不透明度 dim 底,已唱文字全亮 + 光晕,对比度稳定不受 AOD 增亮影响
  • 整块扫光带连续穿行多行:进度按行宽加权分摊到各视觉行,多行歌词扫光一气呵成
  • 行级同步时叠加"当前演唱词微光";软光渲染改用独立柔和光晕层,修复硬件加速下发光丢失

🎵 歌词源

  • 歌词源仲裁新增词级时间戳检测:带逐字时间戳的源(如 SuperLyric 卡拉OK)优先于普通行级 LRC
  • 修复 Lyricon 位置流恢复抖动(NetEase ~60Hz 停顿恢复时 300ms 容差保持单调推进)
  • Spicy EX 连接状态实时化:按 SpicyBridgeStore 数据新鲜度动态判定
  • SuperLyric 新增歌词心跳守护:歌词停止推送时强制重新注册
  • 修复 LyricInfo 息屏歌词卡死:检测 stale(>2s)后按播放速率外推

📐 AOD 布局与放置

  • 新增 AOD 时钟锚点稳定:抗时钟边界快速振荡,歌词位置不再跳动
  • AOD surface 重建后保持时钟锚点,重建后不再跳到被挤压的边界
  • 自定义垂直偏置锚点可自由漫游(时钟上方 / 屏幕中部)

🛠 兼容性(HyperOS / 小米)

  • DozeTriggers 类多候选定位:兼容 HyperOS DEV 中包迁移到 AOSP doze 包
  • 字段反射沿父类链查找;修复 HyperOS 3 小米 17 系 SystemUI uid 校验
  • 修复 SystemUI 调用者校验:改为按包名解析 uid,不再硬编码 1000

🖥 主页 UI 与功能

  • 新增锁屏 / 息屏歌词实时预览卡片:未连接歌词源时播放演示动画
  • 新增 Spicy EX 未连接提示、"检查更新"入口
  • 新增导出 / 导入配置、常驻通知、隐藏后台卡片、隐藏桌面图标等设置

🧹 内部重构

  • 预览与实机共享同一渲染核心 LyricGlowRenderer,效果一致性由构造保证
  • 拆分 MainActivity(2660 行)与 AodLyricCanvasView(1579 行)巨型文件,净删约 900 行冗余代码

🧪 测试与构建

  • 新增单测锁定发光管线判定、整块进度计算与扫光几何,AOD 包 111 个测试全绿
  • CI:wrapper-validation v4、构建队列取消旧 commit、超时保护等稳定性配置

Assets

2

8/10/2026, 2:27:13 AM

安装包说明

  • hyperglow-cnplus-release-v0.3.68-85.apk(正式版):正常使用请安装此版本。
  • hyperglow-cnplus-debug-v0.3.68-85.apk(调试版):提 issue 反馈问题时请安装此版本,可提供详细诊断日志协助排查。调试签名,仅用于测试与问题反馈,请勿作为日常版本长期安装。

更新日志 (v0.3.68 / versionCode 85)

✨ 新增

  • 主页改版:模块运行状态彩色卡片、AOD / 锁屏歌词统计卡片、系统信息一览
  • 权限状态新增 Root 权限 与 获取应用列表 两项显示,未授予时提供授权引导
  • 布局设置新增 自定义纵向位置 滑块,拖动调节歌词块相对屏幕的纵向位置
  • 设置新增 导出配置 / 导入配置:一键备份全部设置为 JSON,或从备份文件恢复
  • 设置新增 常驻通知、隐藏后台卡片、隐藏桌面图标 三个开关
  • SuperLyric / Lyricon 歌词源设置提示始终显示

🐛 修复

  • 修复「此设备未安装 LSPosed」误报:改用 PackageManager.getLaunchIntentForPackage 打开 LSPosed 管理器
  • 修复切歌时 AOD 歌词闪烁
  • 修复歌词时间戳对不上:播放器进度上报停滞/恢复切换导致外推与真实位置抖动,歌词行提前/滞后/跳行,加入 300ms 回退容忍使歌词行平滑推进
  • 修复息屏组件位置乱跳:锁屏通知行动画导致边界逐帧抖动,歌词卡片每次被重新定位,加入 8dp 死区稳定化
  • 修复主页状态卡宽度与图标溢出,移除运行状态中与主页重复的条目
  • 跟进源仓库:SystemUI 进程 UID 动态解析、字段沿继承链查找,修复 HyperOS 3 上「无此系统界面报告」误显示

🔧 其他

  • 诊断改进:无歌词时输出单行「全源汇总」日志(连接状态、stale 秒数、播放进度、当前歌词行),便于定位是播放器未上报进度还是歌词源断连
  • 测试设备重命名为 Redmi K80 Pro,添加 HyperGlow CN+ 项目链接
  • 「音乐暂停后」设置项改名

Assets

2