Skip to content

BaYin v2.2.0

Choose a tag to compare

@github-actions github-actions released this 07 Mar 09:27
· 135 commits to main since this release

🚀 Features

Android 平台适配

  • 新增Android MediaSession前台服务,完善系统媒体控制集成
  • 播放相关能力重构(迁移至Rust播放域):
    • 自动切歌逻辑迁移至Rust层,提升Android端稳定性
    • 新增随机播放模式下的「上一曲/下一曲」功能
    • Android端禁用JS的ended事件处理器,统一由Rust层控制
  • 系统媒体桥接与视觉优化:
    • 在SystemMediaBridge中加载JNI库,完善跨层调用
    • 正在播放的JSON数据中包含封面缓存路径,为MediaSession/系统通知栏设置专辑封面
  • Android启动与运行稳定性优化:
    • 修复启动竞态问题:manage()后再设置JNI AppHandle,JNI中使用try_state()
    • 延迟MediaPlaybackService轮询,避免初始化阶段异常
    • 将system-media改造为标准Tauri移动插件,确保SystemMediaPlugin被正确打包

系统媒体控制

  • 实现Rust播放域与系统控制的同步逻辑,解决JNI MutexGuard生命周期错误
  • 移除未使用的system-media插件句柄,精简代码

🐛 Bug Fixes

Android 平台适配

  • 修复Android端无限自动切歌问题:
    • 自动切歌(drain模式)期间保留end_pending状态,避免重复触发切歌逻辑
    • 结束处理器中使用try_state(),防止状态异常导致的循环切歌
  • 修复启动竞态问题:manage()后再设置JNI AppHandle,JNI中使用try_state()
  • 延迟MediaPlaybackService轮询,避免初始化阶段异常
  • 将system-media改造为标准Tauri移动插件,确保SystemMediaPlugin被正确打包

音频播放核心

  • 降低音量/静音操作延迟:
    • 将音频输出环形缓冲区从约2秒缩减至250ms(保留4096样本的最小缓冲区保护)
    • 前端调整音量逻辑:先执行setVolume,再异步同步托盘静音状态/localStorage
  • 修复进度显示异常:
    • 曲目开始/切换时避免进度跳变:使用会话级时间更新,暂停后精准恢复播放位置
    • 快速切歌(prev/next)后防止进度冻结:简化MusicContext时间监听器的会话校验逻辑
    • 强化进度条渲染稳定性:消除启动/切换时的抖动,移除进度条动画过冲效果

播放器UI与交互

  • 桌面端「Now Playing」标题居中显示,优化视觉体验
  • 修复拼音排序与字母索引对齐问题:
    • 新增compareByPinyin()工具函数,中文按全拼排序、非中文按标准化文本排序
    • 统一歌曲/歌单页的标题/艺术家/专辑排序逻辑,解决索引与列表顺序不匹配问题(如「阿刁」vs「All for love」)

歌词解析

  • 优化双语歌词解析(新增中韩/中日韩混排支持):
    • 基于CJK脚本检测(中/日/韩)扩展解析逻辑
    • 同时间戳不同CJK脚本行自动识别为译文(如中韩、中日)
    • 为单行韩文+内嵌中文翻译场景添加保守回退解析逻辑

📦 Chores

  • 移除system-media插件中未使用的句柄,精简代码结构
  • 调整前端音量处理逻辑的执行顺序,优先保证操作响应性