Skip to content

Releases: dhy0302/AutoLyrics

AutoLyrics 1.13.9 (build 51)

Choose a tag to compare

@github-actions github-actions released this 04 Oct 02:50

AutoLyrics 1.13.9 · build 51

本次更新

优化

  • 取词速度:三个歌词源并发检索

    三个源原本一个搜完再搜下一个,而它们互不依赖。最坏情形(繁体歌名 +
    网易云首个域名不通)是「繁简 × 三源」六段等待相加;改成并发后取
    「最长的一段」。实测正常情况下取词耗时可从 2~4 秒降到 1 秒以内。

  • 繁简双路改为并发

    歌名含繁体字时(绝大多数中文歌名都含),原本要搜两遍——原词一遍、
    简体副本一遍,且是串行。现在两遍同时发出。

    歌名本来就是简体或纯英文时只有一个变体,不付并发开销,行为完全不变。

  • 酷狗的FileHash 查询改为并发

    搜到候选后要为前 3 个各查一次 FileHash 换取歌词 id,这三跳互不依赖,
    串行等于白等三倍时间。

  • 酷狗 FileHash 映射加内存缓存

    FileHash 是音频指纹,永久唯一,同一首歌在任何时候查到的歌词 id 与
    accesskey 都一样。而此前每次切歌都要把那3 跳网络重做一遍。

    现在命中缓存时完全不发请求——重播同一首歌能省掉 3 跳。
    缓存容量 512 首(LRU,约 150 字节/首)。只缓存成功结果:失败多半是
    网络抖动,缓存下来会把瞬时故障固化成「这首歌没有词元」。

改变

  • 负缓存判定由「任一源失败」改为「全部源失败」

    串行时那条「任一失败即失败」碰巧是对的——只要有一个源成功给出结果
    就会直接返回,那个标记根本用不上。

    并发后必须改:假设酷狗与 Lrclib 正常返回「没有」而网易云超时,
    旧判定会给这次结果打上失败标记,于是不写负缓存——明明网络大体可用,
    却让这首歌每次切歌都重新联网三个源,白白浪费流量。

    改为「全部失败」后这种情况能正常写负缓存。而三源全断时行为与旧版
    完全一致
    (仍然不写负缓存,下次重试),不会把「没查成」固化成
    「没有歌词」。

    匹配结果完全不变——并发只改变等待方式,不改变比对顺序:
    候选池仍按用户设定的源顺序排列,八轮递降的判定逻辑一字未动。


安卓自动歌词应用 —— 悬浮窗 / 通知栏 / App 内实时逐字高亮。

项 值
版本 1.13.9
构建号 51
Commit 6c385ee
最低系统 Android 8.0 (API 26)
架构 通用(无 native 库,全平台可装)

选择哪个包

包 用途 覆盖安装
*-release.apk 日常使用推荐 ✅ 可直接升级
*-debug.apk 排查问题用,含调试符号 ❌ 与正式版签名不同

两个包功能完全一致,日常使用请选 release 包。

安装说明

  1. 下载上方 Assets 里的 AutoLyrics-1.13.9-build51-*.apk
  2. 传到手机点击安装(需允许「安装未知来源应用」)
  3. 首次启动后按App 内引导开启三个权限:
    通知读取 / 悬浮窗 / 通知权限

AutoLyrics 1.13.8 (build 50)

Choose a tag to compare

@github-actions github-actions released this 04 Oct 02:20

AutoLyrics 1.13.8 · build 50

本次更新

改变

  • 歌词匹配改为八轮递降阈值

    取词不再用单一的 0.55 门槛,而是按八档阈值从高到低逐轮放宽:

    1.00 → 0.97 → 0.95 → 0.90 → 0.85 → 0.80 → 0.75 → 0.70

    每一轮都从第一个源重新扫一遍,任一轮命中即返回;八轮都空才提示「暂无匹配到歌词」。

  • 匹配优先级从「源顺序」翻转成「分数」

    以前是「源优先级绝对」:酷狗有 0.60 的结果就直接用,网易云有 0.99 的结果根本不看。
    现在是「全局最高分优先,同分时靠前的源优先」。

  • 候选只检索一次

    第一轮就把三个源的搜索结果与得分全部记下来,后面七轮只拿这份缓存比对,
    不再重复发网络请求。酷狗一次检索要走「歌曲库 → 补 hash → 取 krcs 元」三跳,
    八轮各搜一次是二十四跳;现在恒定只搜一次。

说明

  • 评分权重没有改动(仍是歌名 0.55 / 歌手 0.25 / 时长 0.20),
    只有匹配结构变了。
  • 1.00 与 0.97 这两档在真实场景里极少命中:时长项差5 秒就掉到 0.85,
    满分要求歌名、歌手、时长三项全对。但保留它们是对的 —— 一旦日后调过权重
    让满分变得可达,这里无需再改结构;而因为候选只检索一次,
    空转一轮的代价只是几次内存比对,不产生任何网络请求。
  • 歌词源的数量与顺序完全没动,仍是酷狗 → 网易云 → Lrclib(海外兜底),
    用户在设置里的自定义排序照旧生效。
  • 同一个候选只会被取词一次:某一轮判「仅占位歌词」后,后面几轮不会再试它。
  • 调试页文案同步更新,且阈值数字改为从代码读取,日后调档位不会文案与逻辑脱节。

安卓自动歌词应用 —— 悬浮窗 / 通知栏 / App 内实时逐字高亮。

项 值
版本 1.13.8
构建号 50
Commit 47f948b
最低系统 Android 8.0 (API 26)
架构 通用(无 native 库,全平台可装)

选择哪个包

包 用途 覆盖安装
*-release.apk 日常使用推荐 ✅ 可直接升级
*-debug.apk 排查问题用,含调试符号 ❌ 与正式版签名不同

两个包功能完全一致,日常使用请选 release 包。

安装说明

  1. 下载上方 Assets 里的 AutoLyrics-1.13.8-build50-*.apk
  2. 传到手机点击安装(需允许「安装未知来源应用」)
  3. 首次启动后按App 内引导开启三个权限:
    通知读取 / 悬浮窗 / 通知权限

AutoLyrics 1.13.7 (build 49)

Choose a tag to compare

@github-actions github-actions released this 04 Oct 01:38

AutoLyrics 1.13.7 · build 49

本次更新

修复

  • 歌曲信息块不再贴着状态栏

    App 内播放页顶部的歌名 / 歌手那一块,往下让了 12dp,不再紧贴状态栏下沿。

    这是 v1.12.9 撤掉顶部 38dp 顶栏时留下的后遗症:顶栏一撤,歌曲信息块
    跟着上移到了约 39dp,而它上方只剩状态栏安全区,等于贴着状态栏站。

说明

  • 顶部留白加在整页Column 的开头,而不是歌曲信息块自身 —— 权限卡片与
    重取提示出现时排在更上面,加在开头才能一并让位。
  • 歌词高亮行的位置不受影响:它的对齐基准是「窗口高度的 7/16」,
    与视口顶部位置无关,所以视口下移多少,高亮行在屏幕上就原地不动。

安卓自动歌词应用 —— 悬浮窗 / 通知栏 / App 内实时逐字高亮。

项 值
版本 1.13.7
构建号 49
Commit 676d260
最低系统 Android 8.0 (API 26)
架构 通用(无 native 库,全平台可装)

选择哪个包

包 用途 覆盖安装
*-release.apk 日常使用推荐 ✅ 可直接升级
*-debug.apk 排查问题用,含调试符号 ❌ 与正式版签名不同

两个包功能完全一致,日常使用请选 release 包。

安装说明

  1. 下载上方 Assets 里的 AutoLyrics-1.13.7-build49-*.apk
  2. 传到手机点击安装(需允许「安装未知来源应用」)
  3. 首次启动后按App 内引导开启三个权限:
    通知读取 / 悬浮窗 / 通知权限

AutoLyrics 1.13.6 (build 48)

Choose a tag to compare

@github-actions github-actions released this 03 Oct 18:14

AutoLyrics 1.13.6 · build 48

本次更新

新增

  • 关于页可检测更新

    「应用版本」那一行最右端新增「检测更新」,点一下会去查官方最新发行版
    并与本机比对,结果用对话框告知:

    情况 提示
    本机就是最新 你的已经是最新版本啦 (^▽^)
    官方有新版 检测到已有新版本,请前往下载更新(•﹏•)(附「前往下载」按钮)
    本机更新 貌似你的Auto Lyrics版本已经领先官方发行版本了呢⊙ω⊙?
    没查成 检测失败,请检查网络后重试

    有新版时对话框里会附上官方版本号(如 1.14.0(49)),方便判断要不要升。
    检测期间入口显示「检测中…」并禁用,防止连点重复打接口。

  • 仓库地址不再写死在代码里

    原来它是 AboutPage.kt 顶部的一个常量,现在挪进
    res/values/strings.xml 的 repo_url。「GitHub」行、开源许可页、
    检测更新三处共用同一份定义,将来换仓库只改 XML 一处。


安卓自动歌词应用 —— 悬浮窗 / 通知栏 / App 内实时逐字高亮。

项 值
版本 1.13.6
构建号 48
Commit 7c36cbb
最低系统 Android 8.0 (API 26)
架构 通用(无 native 库,全平台可装)

选择哪个包

包 用途 覆盖安装
*-release.apk 日常使用推荐 ✅ 可直接升级
*-debug.apk 排查问题用,含调试符号 ❌ 与正式版签名不同

两个包功能完全一致,日常使用请选 release 包。

安装说明

  1. 下载上方 Assets 里的 AutoLyrics-1.13.6-build48-*.apk
  2. 传到手机点击安装(需允许「安装未知来源应用」)
  3. 首次启动后按App 内引导开启三个权限:
    通知读取 / 悬浮窗 / 通知权限

AutoLyrics 1.13.5 (build 47)

Choose a tag to compare

@github-actions github-actions released this 03 Oct 17:42

AutoLyrics 1.13.5 · build 47

本次更新

修复

  • 调色板的「取消」现在真的会取消

    之前在设置页点「取消」完全没有反应 —— 那里传的是空函数,
    而颜色只在点「确定」时才写回设置,所以拖了半天色轮,
    想反悔却只能一条条拖回去,或者直接离开页面把改动丢掉。

    现在的行为:

    当前状态 点「取消」
    没动过(没输 RGB、没拖色轮) 什么都不发生
    动过 颜色与 RGB 数值一起回到打开面板时的样子
    刚还原完 什么都不发生(不会一路往回退)

    桌面悬浮窗上的「取消」仍兼作收起面板——那里面板是弹出来的,
    需要一个收起方式;还原逻辑对它同样生效。

  • 选好的颜色不会再因为「关得太快」丢掉

    设置写盘有 300 毫秒防抖(为的是拖校准滑块时不反复写磁盘),
    但选色这种一年未必改一次的改动也走了同一条路,
    于是留下一个真实的丢失窗口:选完色 300 毫秒内进程被回收,重开就退回去了。

    新增「改完立刻落盘」的写法,五处改颜色的地方(两处色轮的确定、
    两排预设色块、悬浮窗取色)都改用它。颜色宁可多写一次磁盘,也不能丢。

    颜色本来就已经被持久化(textColor / inAppTextColor 两个键),
    关掉 App 再打开会沿用上次的结果,这次是把那个 300 毫秒的窗口也补上。


安卓自动歌词应用 —— 悬浮窗 / 通知栏 / App 内实时逐字高亮。

项 值
版本 1.13.5
构建号 47
Commit 1224588
最低系统 Android 8.0 (API 26)
架构 通用(无 native 库,全平台可装)

选择哪个包

包 用途 覆盖安装
*-release.apk 日常使用推荐 ✅ 可直接升级
*-debug.apk 排查问题用,含调试符号 ❌ 与正式版签名不同

两个包功能完全一致,日常使用请选 release 包。

安装说明

  1. 下载上方 Assets 里的 AutoLyrics-1.13.5-build47-*.apk
  2. 传到手机点击安装(需允许「安装未知来源应用」)
  3. 首次启动后按App 内引导开启三个权限:
    通知读取 / 悬浮窗 / 通知权限

AutoLyrics 1.13.0 (build 46)

Choose a tag to compare

@github-actions github-actions released this 03 Oct 17:18

AutoLyrics 1.13.0 · build 46

本次更新

调整

  • 色轮调色板:十六进制改为 RGB 读数,并支持手动输入数值

    预览色块旁边原先显示 0xDC8253C3(ARGB 十六进制)。
    这串数字是给机器看的:既判断不出「这是不是我要的颜色」,也没法照着微调。

    现在改为 RGB 130, 83, 195 —— 三个十进制分量,普通用户能直接对上号。

    另外新增三个输入框(R / G / B),可直接键入数值:

    位置 RGB 读数 手动输入
    设置 → 歌词页 → 歌词颜色 ✅ ✅
    设置 → 悬浮窗 → 字体颜色 ✅ ✅
    桌面悬浮窗上的色轮 ✅ ❌ 见下

    桌面悬浮窗那个色轮只做读数、不放输入框:悬浮窗是
    FLAG_NOT_FOCUSABLE 窗口(不抢焦点、不拦截背后 App 的操作),
    收不到键盘输入,摆了输入框也点不出键盘。要手输请到
    「设置 → 悬浮窗 → 字体颜色」。

    输入规则:只接受数字、最多三位、超过 255 自动压到 255;
    三项都合法时才生效,缺项/越界时保持原色不动
    (避免只改 R 时把 G 当 0 处理,颜色突然跳变)。
    输入 RGB 不会改动透明度——它由棋盘格那根条独立控制。

  • 桌面悬浮窗色轮与设置页双向同步

    两处本来就读写同一个设置项,但面板内部状态不会跟随外部变化更新,
    导致:在设置页点旁边的预设色块 → 颜色已经变了,
    但色轮和读数还停在旧值 → 这时点「确定」会把颜色改回去。

    现在外部值变化时面板整体重置,三处显示始终一致。


安卓自动歌词应用 —— 悬浮窗 / 通知栏 / App 内实时逐字高亮。

项 值
版本 1.13.0
构建号 46
Commit d5f4228
最低系统 Android 8.0 (API 26)
架构 通用(无 native 库,全平台可装)

选择哪个包

包 用途 覆盖安装
*-release.apk 日常使用推荐 ✅ 可直接升级
*-debug.apk 排查问题用,含调试符号 ❌ 与正式版签名不同

两个包功能完全一致,日常使用请选 release 包。

安装说明

  1. 下载上方 Assets 里的 AutoLyrics-1.13.0-build46-*.apk
  2. 传到手机点击安装(需允许「安装未知来源应用」)
  3. 首次启动后按App 内引导开启三个权限:
    通知读取 / 悬浮窗 / 通知权限

AutoLyrics 1.12.9 (build 45)

Choose a tag to compare

@github-actions github-actions released this 03 Oct 17:02

AutoLyrics 1.12.9 · build 45

本次更新

修复

  • 歌名与「重取」的对齐不再受「歌词源」那行影响

    上一版把歌曲信息那一行改成居中对齐后有个副作用:右侧竖列(重取 + 精简切换)
    比左侧文字列高,一旦「歌词源」那行不显示(还没取到词时正好没有),
    左列变矮、被垂直居中后歌名就往下掉约 6dp,与「重取」错开 ——
    而没取到词恰恰是最需要点「重取」的时候。

    现在整行改为顶对齐:左侧首行(歌名)永远贴着行顶,
    与右上角「重取」的对齐关系不再受左列行数影响。

说明

  • 上一版更新日志里「重取下移」的说法不准确,已更正:
    「重取」本来就在顶栏右端,顶栏撤掉后下面一行顶上来,
    它的屏幕位置几乎没变(约 43dp → 40dp)。
    真正在动的是歌曲信息块 —— 整块上提,歌名从约 99dp 提到约 39dp。

安卓自动歌词应用 —— 悬浮窗 / 通知栏 / App 内实时逐字高亮。

项 值
版本 1.12.9
构建号 45
Commit 2a25714
最低系统 Android 8.0 (API 26)
架构 通用(无 native 库,全平台可装)

选择哪个包

包 用途 覆盖安装
*-release.apk 日常使用推荐 ✅ 可直接升级
*-debug.apk 排查问题用,含调试符号 ❌ 与正式版签名不同

两个包功能完全一致,日常使用请选 release 包。

安装说明

  1. 下载上方 Assets 里的 AutoLyrics-1.12.9-build45-*.apk
  2. 传到手机点击安装(需允许「安装未知来源应用」)
  3. 首次启动后按App 内引导开启三个权限:
    通知读取 / 悬浮窗 / 通知权限

AutoLyrics 1.12.9 (build 44)

Choose a tag to compare

@github-actions github-actions released this 03 Oct 16:51

AutoLyrics 1.12.9 · build 44

本次更新

调整

  • 歌词页顶部精简:去掉「正在播放」与右上角设置入口

    歌曲信息那一行左移上提后,原来那条 38dp 的顶栏就空出来了:

    • 居中的「正在播放」是纯装饰文案,不提供任何操作 —— 去掉(它只是复述
      屏幕上本来就有的信息,还占着一整行高度)。
    • 右上角那个滑块设置入口与右下角「设置」按钮功能重复 —— 去掉。
      歌词页设置仍可从「设置 → 歌词页」进入。
  • 「重取」移到原设置入口的位置,与歌名同一水平线

    「重取」没有跟着删。取词出错时它是唯一的补救入口,
    所以保留下移,放到原设置入口所在的右上角,并与左侧歌名对齐成一行。

    右侧从此是上下两枚:上面「重取」、下面精简切换
    (与原布局「设置入口在 ⋮ 正上方」的排布一致)。

  • 高亮行由屏幕正中上移到约 7/16 处

    原来高亮行对齐屏幕垂直中线(8/16),实测偏下 ——
    上方要放歌曲信息与「上一句」,下方只有「下一句」,
    视觉重量天然偏上,正中反而显得这一行被压在下半屏。

    现在上移到屏幕从上往下 7/16(约 43.8%)的位置,
    上方留 7 份、下方留 9 份。普通模式与精简模式同时生效。

    歌曲信息整体上移后腾出的高度归歌词区,
    可见歌词比原来多出约一行半,填补了上移留下的空间。


安卓自动歌词应用 —— 悬浮窗 / 通知栏 / App 内实时逐字高亮。

项 值
版本 1.12.9
构建号 44
Commit 445983b
最低系统 Android 8.0 (API 26)
架构 通用(无 native 库,全平台可装)

选择哪个包

包 用途 覆盖安装
*-release.apk 日常使用推荐 ✅ 可直接升级
*-debug.apk 排查问题用,含调试符号 ❌ 与正式版签名不同

两个包功能完全一致,日常使用请选 release 包。

安装说明

  1. 下载上方 Assets 里的 AutoLyrics-1.12.9-build44-*.apk
  2. 传到手机点击安装(需允许「安装未知来源应用」)
  3. 首次启动后按App 内引导开启三个权限:
    通知读取 / 悬浮窗 / 通知权限

AutoLyrics 1.12.8 (build 43)

Choose a tag to compare

@github-actions github-actions released this 03 Oct 16:08

AutoLyrics 1.12.8 · build 43

本次更新

调整

  • 通知栏歌词新增「透明背景」开关

    通知栏那条通知下面现在有两个按钮:

    按钮 当前状态 → 显示文案
    悬浮窗开关 开着 →「关闭桌面歌词」/关着 →「开启桌面歌词」
    透明背景 不透明 →「歌词背景透明」/透明 →「歌词背景不透明」

    文案写的都是「点一下会发生什么」,不用先判断现在是什么状态。
    透明背景与设置页的「透明背景」是同一个开关,两边状态同步。

    两个按钮都走广播,所以悬浮窗被锁定(点不动、拖不了)时照样能调,
    等于把通知栏当成悬浮窗的遥控器。

  • 悬浮窗开关的按钮文案去掉「悬浮窗」三字,由
    「关闭/打开桌面歌词悬浮窗」改为「关闭/开启桌面歌词」。


安卓自动歌词应用 —— 悬浮窗 / 通知栏 / App 内实时逐字高亮。

项 值
版本 1.12.8
构建号 43
Commit 023ac1b
最低系统 Android 8.0 (API 26)
架构 通用(无 native 库,全平台可装)

选择哪个包

包 用途 覆盖安装
*-release.apk 日常使用推荐 ✅ 可直接升级
*-debug.apk 排查问题用,含调试符号 ❌ 与正式版签名不同

两个包功能完全一致,日常使用请选 release 包。

安装说明

  1. 下载上方 Assets 里的 AutoLyrics-1.12.8-build43-*.apk
  2. 传到手机点击安装(需允许「安装未知来源应用」)
  3. 首次启动后按App 内引导开启三个权限:
    通知读取 / 悬浮窗 / 通知权限

AutoLyrics 1.12.7 (build 42)

Choose a tag to compare

@github-actions github-actions released this 03 Oct 15:38

AutoLyrics 1.12.7 · build 42

本次更新

修复

  • 彻底修复「锁屏切歌后歌词丢失」

    现象:黑屏锁屏期间切歌,亮屏后歌词页显示
    「没找到歌词,去「歌词源」页可手动排查」,悬浮窗也一起空掉;
    手动点「重取」又总能正常拿到。

    根因:歌词源把「网络失败」误报成了「没有这首歌」。

    每层实现都写了 catch (_: Throwable) { null } ?: return emptyList()
    —— 熄屏时 Android 会限制网络,请求直接失败,
    但异常被就地吞掉、转成了空列表往上交。
    上层看到空列表只能判定「查过了,确实没有」,
    于是把这结果写进负缓存,有效期 3 天。
    一次锁屏断网就把这首歌锁死了。

    手动重取能好,是因为它走 force = true 绕过缓存重新联网——
    这正好反证了问题不在歌词源,而在「坏结果被当成有效结论缓存了」。

    改法:

    • 新增 SearchOutcome,让歌词源必须如实上报成败,
      把「确实没有候选」和「请求没打通」区分开
    • 酷狗 / 网易云 / Lrclib 三个源全部改用新契约,
      异常不再被吞;有响应但结构不对(风控返回 HTML 等)也算「没查成」
    • 只有「确实查过但没有」才写负缓存,「没查成」一律不写
    • 新增自动退避重试:状态仍是未取到时,按 3/10/30/60/120 秒
      自动重查(累计约 4 分钟)。超过为止,不再自动惊动用户。

    为什么加重试:修掉负缓存只解决「不再被锁死」,
    但那一轮的失败状态仍留在内存里。而曲目没再变过,
    原本只有「手动重取」或「打开 App」才会重新触发——
    用户亮屏后如果只看悬浮窗不进 App,歌词就一直空着。
    现在不管有没有打开 App,网络恢复后都会自己补上。

内部

  • 三个歌词源的 search() 返回类型由 List<Candidate> 改为 SearchOutcome,
    调用方同步更新(取词主流程、锁定来源流程、调试页)。

安卓自动歌词应用 —— 悬浮窗 / 通知栏 / App 内实时逐字高亮。

项 值
版本 1.12.7
构建号 42
Commit ec0b18c
最低系统 Android 8.0 (API 26)
架构 通用(无 native 库,全平台可装)

选择哪个包

包 用途 覆盖安装
*-release.apk 日常使用推荐 ✅ 可直接升级
*-debug.apk 排查问题用,含调试符号 ❌ 与正式版签名不同

两个包功能完全一致,日常使用请选 release 包。

安装说明

  1. 下载上方 Assets 里的 AutoLyrics-1.12.7-build42-*.apk
  2. 传到手机点击安装(需允许「安装未知来源应用」)
  3. 首次启动后按App 内引导开启三个权限:
    通知读取 / 悬浮窗 / 通知权限