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

11/2/2026, 2:02:52 AM

安装包用途说明

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

更新日志 · v0.3.171 (versionCode 198)

新增功能

  • 锁屏歌词卡固定在音乐卡下方:控制器把歌词卡钉在媒体卡可视底部 + 12dp(reserve = 上间距 + 卡高 + 通知间距);新增 LyricReserveState,在 NotificationStackScrollLayout.onLayout 完成后把媒体卡之后的子视图整体下移,不改子视图类型、不写 translationY,避免 MIUI 重排把音乐卡顶走。LockscreenSurfaceHook 首次遇到通知栈即安装 hook(阶段一常开,开关/配置链路后续接入)。

修复

  • 陈旧播放态死循环自愈(没播放仍显示歌词):写端停更后 SDK 仍以 60Hz 重发同一停更值,playing=true 永不被推翻,导致无限期保活下 AOD 常亮、位置钉死歌尾。看门狗在「外推/歌尾保持中 + MediaSession 明确未播放 + 真实位置停更 ≥15s」时把生产者标记为暂停,交给既有暂停驻留/停止检测链路;判据用最后真实位置时刻而非回调时刻。
  • 息屏歌词时间戳整体滞后:MediaSession 的 position 是 lastPositionUpdateTime 那一刻的值,直接重锚会按更新延迟回卷。兜底恢复改为按倍速推算到当前时刻(position + (now - lastPositionUpdateTime) × speed)后再比较/重锚,并补延迟更新场景回归测试。
  • 写端沉默后倒回歌词(时间戳对不上的直接来源):写端沉默约 20s 后送来落后约 20s 的首值,旧行为当成真实回跳,歌词倒回再快进重放。新增陈旧冲刷判定:外推中收到落后最后真实基准的值先观察一拍,下一拍大步跨进(≥1.5s)视为冲刷追赶并持续忽略,按正常节奏小幅前进则视为真 seek 立即采纳(仅延迟一拍约 17ms);短暂停更(<3s)仍走既有 300ms monotonicResume 容差。
  • 兜底恢复后被写端残留值冲掉基准:MediaSession 兜底恢复到真实位置后 20–50ms,写端醒来送来落后 150s 的冻结残留,旧判定因 extrapolating=false/沉默不足而不设防。重构 classifyStaleFlushSample:值落后最后真实基准 ≥5s 时无条件进入观察/冲刷判定(不看外推状态与沉默时长),观察位上完全相同的重复值视为写端仍冻结继续按住。
  • SuperLyric 暂停期仲裁器来回切:暂停 27 分钟后每 ~15s 强拉一次旧行并清空状态,导致仲裁器在 superlyric↔lyricon 间反复切换、AOD 反复点亮旧行。强拉前先读 owner MediaSession 播放态,仅 STATE_PLAYING 才清状态并拉取,暂停/停止时跳过并留痕。
  • 停止态会话误判:state=null 且播放器会话仍存在时按 STOPPED 累加、连续 3 次清曲目;会话查不到时保持旧行为。refreshSessionPlaying 改为只认同名在播会话,并抽出 resolveSessionPlayingObserved 真值表纯函数(新增 6 个单测)。

Full Changelog: https://github.com/aodianjun/com.aodianjun.hyperglow.cnplus/compare/197-0.3.170...198-0.3.171

10/23/2026, 7:50:04 AM

安装包用途说明

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

更新日志 · v0.3.170 (versionCode 197)

新增功能

  • 单词效果包与沙箱程序 VM:新增声明式 DSL 与沙箱字节码程序(整块歌词上下文,渐变/阴影/描边/路径等原语);效果规格随配置文档/备份/SystemUI 通道往返,支持效果包导入与选择器;设置页新增在线编辑器(Word Effect Studio)入口,内置三档效果保持原渲染路径。
  • 无歌词/纯音乐三态与尾奏能力:真无歌词与纯音乐共用 KEEP(保持原标记)/ MUSIC_INFO(替换为歌曲信息)/ RESTORE_DEFAULT(交还系统默认)三态,AOD 与锁屏按面独立;新增每面 0–30s 可配尾奏超时(默认 3s)——投影层保留最后一行,MUSIC_INFO 元数据为空时回落原行,到点交还系统。
  • 自定义 AOD 保活时长:保活时长支持 1 分钟–24 小时的任意值(原仅 5 个预设),设置页新增「自定义…」分钟输入对话框(1–1440),标签按时/分格式化。

修复

  • AOD 保活到点收尾不干净:到点后在 layoutSurface 唯一显示点加 expired 门控,attach/几何刷新/自定义更新都无法把歌词面顶回来;隐藏不再只执行一次;释放时钟时清空时钟锚点与记忆几何、归零自定义偏移,抬起恢复按原厂位置重新播种。
  • AOD 投影 ticker 竞态退出:100ms 循环不再按样本引用身份退出(arbiter 约每 100ms 写新实例会误杀循环),改为只按会话身份/播放状态判定;新增 1s 投影看门狗自动重启,并保证有限时长保活每秒重算、到点按时撤唤醒。
  • 熄屏位置断供冻结歌词:位置源停写 ≥15s 时先用 MediaSession 位置兜底(前进且不越歌长才接受),拿不到再外推;外推撞歌尾但写入端已停写时保持最后真实位置/当前行;「保持息屏活动 N 分钟」窗口改为熄屏时重置。
  • Lyricon 回调链停发:第二位置源从外推移到看门狗循环;重订阅连续失败后整体重建 subscriber(先 destroy 再 create,60s 冷却),不再只重挂回调。
  • SuperLyric 长时间停更后整首无词:停更 ≥2 分钟时清掉陈旧状态并强制拉取当前全量数据(模块只在跨行广播、不补发当前行)。
  • 插件在 release 宿主加载失败:插件 dex 改为自带 kotlin-stdlib(R8 混淆后宿主无法提供),并修正 PluginClassLoaderPolicy 的 dex 头偏移(type_ids_off 0x4C→0x44、class_defs_off 0x68→0x64);新增插件 DEX 自包含门禁。
  • 锁屏自定义主题与能力上报:自定义锁屏主题不再被 defaultTheme 硬拦截(布局仍由时钟/通知几何与 usableArea 兜底);通知栈 isShown=false 不再按全屏占位处理;能力上报等待 AOD 探针就绪,App 端忽略 4/16 临时降级,重复上报按内容去重。

优化

  • 移植上游 fefe5c54→2eaa191 的 5 个提交:Spicy EX 环境探测(只读 root 探针 + 报告契约/环境政策/诊断清单 UI)、桥接文档身份改按曲目 URI + 整秒时长容差、状态 reducer 去墓碑、HyperOS 4 接缝候选、SurfaceEvidence 每进程一次事实 + 画布 surfaceKind、SymbolResolver.resolveMethodInOrder。
  • 插件开发文档:新增 docs/PLUGIN_DEVELOPMENT.md 第三方插件开发标准(API、生命周期、运行时契约、打包与类加载策略)。
  • CI:Actions 制品额度耗尽导致上传失败时降级为 warning,不再连带跳过 debug/插件/正式版发布;publish-debug 在无 artifact 时保留现有 debug release 不做空覆盖。

Full Changelog: https://github.com/aodianjun/com.aodianjun.hyperglow.cnplus/compare/196-0.3.169...197-0.3.170

Assets

2

10/14/2026, 3:50:08 AM

安装包用途说明

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

更新日志 · v0.3.169

新增功能

  • SuperLyric 歌词源适配 SuperLyricApi 3.7:支持服务端全曲包(allLyrics + 当前行下标 + 进度/时长,行级翻译与罗马音随行过桥)与跨行增量包;活动行按 currentLyricIndex 取(全量包首行不再把整首钉在首行);冷启动注册成功后主动拉取一次最新歌词(10s 限流,自愈);持全曲视图时直读整曲快照,管线自动回落逐行聚合。旧模块(≤3.4)行为逐字节不变。
  • lyricfetch / amll-ttml 插件适配 lyrics-core 0.5.0:消费行级 x-roman 音译(SyncedLine.phonetic);和声行(x-bg)内嵌 x-roman 与纯文本行级 x-bg 的兜底合成经实测仍必要,保留。

修复

  • 对唱并发行纳入联合预算:主行 + 并发行合计超 128 词或联合聚合预算时整条降级丢弃,不再整屏拒收(此前主 80 + duet 60 各自合法、合计 140 会整包拒收导致该行消失)。
  • 修复投影发布 TOCTOU:发布加代次闸门(publishIfCurrent),暂停确认/延迟释放后旧快照不再提交,杜绝 AOD 继续显示过期歌词。
  • 过时样本判定改会话级:同一会话的新样本实例不再被误判为「会话失效」而发布不可逆的终态 Hidden(黑屏)。
  • 修复设置保存/导入/重置的反向锁序死锁:回调移出 repository 锁,修「保存设置与切歌/重启歌词源重叠」导致的 UI 挂死(ANR)。
  • 插件运行时:加载/重载移出主线程(专用单线程通道 + 整表原子替换);超时显式判定(不再与「插件返回 null」混淆)并加连续超时熔断;补上 onUnload 调用。
  • lyricfetch 传输失败不再写 7 天负缓存:fetch 结局三分类,网络失败写 60s 短退避;失败条目在缓存页可见并可删条重试。
  • 插件安装器:ZIP 解压加 64MiB 未压缩总量预算,超长条目拒绝而非静默截断成半截 dex;安装改「staging 临时目录 → 成功后原子替换」。
  • 封面帧缓存改有界 LRU:帧缓存条数 64 + 权重 1MiB 双上限,失败/节流表限额 128 条,修内存随播放无界增长。
  • Lyricon 歌词源:重建订阅加成败判据(10s 验证窗)与按 2 的幂退避(30s→240s);停播检测改查播放器包名(修「停止播放不清曲目」,issue #27)。
  • 宿主插件缓存配额:覆盖写按新旧值差值计费(修同键大→小被误拒);拒绝保留旧值并可经 cacheStats() 观察。
  • hideCreditLines 偏好观察:改注册变更监听,外部开关/备份导入变更后预览即时生效(不再冻结组合期首读值)。
  • DiagnosticDraftStore.encode 移入 try:校验失败返回 false 且不覆盖既有草稿。
  • 生产者编号原子化:LyricInfo / Lyricon 的 generation/sequence 改原子递增(并发入口交错不再丢号)。

优化

  • AOD 画布逐帧分配削减:扫光 shader 按色缓存 + localMatrix 表达几何、行级逐字合成几何缓存、多处缓冲/Path/Paint 复用(约 3.5–4.5KB/帧)。
  • 设置 UI 主线程卸载:背景图解码、自定义字体解析、备份导入解析搬 IO 通道(代次票 latest-wins),落盘与侧设置应用仍在原线程。
  • 插件下载地址改指向 LSPosed 模块仓库(README + 应用内「下载插件」按钮)。
  • 修正文档:心跳周期口径(1.5s keepalive / 4.5s 全量门槛)与桥调用方 UID 表述。
  • CI:publish-debug 发布步骤加 main 守卫,release job 加 needs: build。

Full Changelog: https://github.com/aodianjun/com.aodianjun.hyperglow.cnplus/compare/195-0.3.168...196-0.3.169

Assets

2

10/10/2026, 4:33:35 PM

安装包用途说明

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

更新日志 · v0.3.168

新增功能

  • 「不显示非歌词内容(作词/作曲等)」开关:歌词里的制作名单行整行隐藏——遇名单行时提前显示下一句真歌词,下一行也是名单则显示播放占位符,名单不再占据「下一行」槽位;判定覆盖简繁中文的作词/作曲/编曲/调校/音乐总监/录音/混音/母带/和音/弦乐监制/民族伴唱监制等角色,以及二胡/古琴/天琴/骨笛/南音洞箫/琵琶等乐器长尾。默认关闭。
  • 辅助文字字号可调 + 自适应大小:辅助文字大小按主行倍率 50%–150% 可调;装不下时在可读性下限内自动缩到刚好放下(默认开)。
  • 辅助文字内容改为多选:音译 / 翻译 / 和声可任意组合,逐项勾选即时生效;新增「和声」档,与「显示并发歌词(对唱)」开关解耦。
  • App 内预览按真实播放位置扫光/逐字:放歌时预览不再跑固定的 2.5 秒演示循环,与实机同拍。
  • 长间奏显示倒计时圆点(参考 HyperLyric 同名方案)。
  • 歌曲信息布局(堆叠/单行)与歌手行字号可调。
  • 并发歌词第二行播自己的换行动画(退场→入场,槽位原地不动)。
  • 预览补全并发行与和声(与实机同源:主行同款行 + 替代下一行)。
  • amll-ttml 插件 1.0.2:行级 x-bg 兜底合成、x-bg 内 x-roman 回填、把 ttm:agent 演唱者身份带进行元数据。

修复

  • 名单行判定按真机实测重写:初版只认「作词/作曲/编曲」等六个词,真机开场 24 行名单里只占 3 行,其余(调校/音乐总监/吉他/和音/录音/弦乐/二胡/古琴/天琴/唢呐/古筝/琵琶/南音拍板/南音洞箫/骨笛/竹笛/弦乐监制/民族伴唱监制/混音/母带/音频编辑…)全部漏判。判定改为「标签 + 分隔符,标签等于角色词或以角色词结尾」,并以真机 24 行名单 + 56 行歌词原文固化回归用例。
  • 和声行按辅助行样式渲染(与对唱区分),不再出现主行下方两条一样的大字行。
  • 并发行相对主行独立:主行换行不再把还没唱完的和声行卷走/替换;和声行也不会在换行间隙被晋级成主行。
  • 对唱主行按行身份选择(位置仅兜底),修「第二行没唱完就换到第一行」。
  • 并发行/和声行按各自的真实词窗走逐字卡拉 OK(不再整行均匀合成、抢拍或滞后)。
  • 两行按演唱者固定:并发换行不再对调位置;源里没有演唱者身份时按重叠聚类自动分配,独唱句回第一行。
  • 进出并发段时两行的归属与离场(不再冻结在上一段)。
  • 同文重复句恢复换行动画(副歌重复句不再被当成同一实例)。
  • 伴唱行按作者编排的共享窗口加入并发场景。
  • 声明 forceQueryable,让宿主能发现 bridge 组件。

优化

  • 子句标点后优先断行(均衡分块加权)。
  • 新增并发行投影/桥接诊断探针,真机排查不必再抓屏。
  • 同步上游规范文本(重连更正 / root 探测 / wake broker / 能力可达 / 布局与圆点 / 伴唱规则)。

Full Changelog: https://github.com/aodianjun/com.aodianjun.hyperglow.cnplus/compare/194-0.3.167...195-0.3.168

Assets

2

10/7/2026, 11:49:14 AM

安装包用途说明

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

更新日志 · v0.3.167

修复

  • 对唱/和声并发行不显示(真机逐环定位,三处独立成因):①并发行原先只在生产者侧按「纯时间窗重叠 ≥1 秒」预计算,源行表首尾相接(网易云 LRC 常态)时永远选不出候选,而插件(amll-ttml)替换进来的 TTML 里的对唱 agent 行与 x-bg 和声行从不参与——现按 HyperLyric 的呈现边界模型,在插件改写歌词行后按行身份从最终行表重选并发行,并优先把同句和声行(role=BG,与活动行共享窗口 ≥1 秒)挂到活动行上;②该重选的守卫条件写错——PluginPipeline.diff() 会把 LYRICS 从 changedSongFields 里过滤掉,导致分支恒不执行(真机上从未生效),改判「插件是否改动了歌词行本身」;③画布给并发行加的时间窗门控用生产者上报的位置去比插件行的窗口,两条时间轴粒度不同(实测同一句 5.2 秒 vs 20.5 秒),把和声整段挡掉——现随活动行绘制(和声随父行在唱就在屏上)。
  • 位置落在插件行间隙时富化整段跳过:插件 TTML 的行窗比生产者行窗细,而位置采样按行跳,位置常落在 TTML 的行间隙里(实测 pos=184.8 秒而该句是 170.5–175.7 秒),原实现直接放弃富化,导致插件的词窗/译文在该句上不生效(诊断探针表现为 words=0)。现按归一化文本回退认行。
  • AI 逐字翻译插件改分批 + 渐进:修复真机上「插件没在用」的两处缺陷(长请求被整体超时丢弃、结果一次性下发看不到渐进效果)。
  • 插件设置文案在简体设备上显示成繁体:locale 解析修正 + manifest 补 zh-CN。
  • CI:插件发行说明里的反引号未转义,导致 publish-plugins 任务失败。

新增功能

  • AI 逐字翻译(新插件 ai-translation-words)+ 宿主消费逐字翻译词表:翻译辅助行按真实词窗逐字点亮,与主行逐字效果同轴。
  • Lyricon 歌词源自带逐字翻译词表接入辅助行逐字(生产者随活动行下发,与缓存词表同生命周期)。
  • 插件链覆盖逐行歌词源:Lyricon / LyricInfo / SuperLyric 等逐行源不再绕过插件链。

优化

  • 并发行诊断探针:Duet attach(插件行表构成与同句和声配对结果)与 Duet draw(并发行真的画出来时记录窗口/词数/文本),真机排查不必再掐点抓屏。
  • README 刷新:功能列表补齐(插件链覆盖全部歌词源、四个官方插件、对唱/辅助文字/外观等),并加入实机演示 GIF。
  • 文档:LSPosed 推送与镜像仓同步流程(含 created_at/tag 约定等实操要点)。

Full Changelog: https://github.com/aodianjun/com.aodianjun.hyperglow.cnplus/compare/193-0.3.166...194-0.3.167

Assets

2

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: https://github.com/aodianjun/com.aodianjun.hyperglow.cnplus/compare/109-0.3.82...193-0.3.166

Assets

2

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: https://github.com/aodianjun/com.aodianjun.hyperglow.cnplus/compare/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