github DE105/SmartisanMusic-Revived v2.1.0

8 hours ago

大幅优化性能,并继续打磨播放链路和交互细节。

在 8.1.0 legacy View 复刻主干完成后,这个版本重点降低媒体库冷启动和扫描开销,优化播放队列恢复与封面加载稳定性,统一 Media3 播放策略,接入预测性返回手势,增加艺术家分隔符号设置,修复系统通知封面错位,并补齐原版列表交互、专辑视觉、艺术家详情和二级页面转场细节。

更新重点

媒体库与冷启动性能

  • 新增 Room 持久化媒体库索引,冷启动优先复用本地索引,再按 MediaStore snapshot 增量刷新。
  • 优化首次进入 App 的媒体库加载路径,避免首屏阶段立即做完整扫描和重复 MediaStore 查询。
  • 播放队列恢复改为按 ID 查询并复用缓存,降低启动时恢复播放状态的额外开销。
  • 引入 stable key,降低 MediaStore ID 变化后导致播放队列、历史状态和媒体恢复失败的风险。
  • 手动刷新媒体库时只扫描未入库音频路径,并移除 DSD 格式主动扫描,降低刷新时的 CPU 开销。
  • 将专辑 / 艺术家封面补全移动到 IO 路径,避免主线程读取索引导致卡顿或闪退。
  • 修复媒体库加载期间歌单详情、加歌页等页面闪现假空态的问题。

播放链路与 Media3 行为

  • 统一专辑、艺术家、文件夹、收藏、播放列表和歌曲页的随机播放入口,改为交给 Media3 shuffle 处理。
  • 移除入口侧预打乱和分散的 Random 起播逻辑,避免双重随机和不同页面播放策略不一致。
  • 新增播放队列去重 helper,减少重复歌曲进入当前播放队列。
  • 队列快照保存 mediaId 与 stable key,恢复时支持 stable key fallback。
  • 播放服务恢复队列时按隐藏目录规则过滤,保持恢复结果和媒体库可见性一致。
  • 优化播放页状态刷新,将进度、音量等高频状态拆开刷新,减少完整播放状态的重复重建。
  • 硬件音量键绑定媒体音量流,并保持自定义音量条与系统媒体音量同步。

系统通知与封面稳定性

  • 新增 MediaSession 专用 BitmapLoader,优先按当前 mediaId 从本地音频文件读取嵌入封面。
  • 避免系统通知使用 Media3 动态 metadata 中可能滞后的 artworkData,修复锁屏 / 通知栏专辑图错位。
  • 在媒体库条目 extras 中写入 mediaId,供通知封面加载在 artworkUri 缺失或不稳定时回退定位当前歌曲。
  • 播放服务接入并释放封面 loader,保持系统通知封面与当前 MediaSession 条目一致。

列表交互与原版操作细节

  • 新增 legacy 列表滑动选择控制器,支持歌曲、专辑、歌单、喜欢歌曲、文件夹等页面连续滑动多选。
  • 修复滑动多选偶发卡顿,边缘滚动改为逐帧滚动,减少动画堆叠。
  • 对齐原版歌曲列表右滑删除,补齐垃圾桶图标、右滑展开 / 收起动画和删除确认联动。
  • 修复歌曲左侧多选触摸状态,避免 checkbox 命中异常和蓝色高光残留。
  • 对齐原版 ListView footer 机制,为歌曲、收藏、文件夹、播放列表及详情歌曲列表补齐底部占位,避免最后一项被底部播放条遮挡。
  • 文件夹详情补齐歌曲三点操作,并缓存目录与歌曲列表绑定状态,降低返回和刷新时的重复绑定开销。

专辑、艺术家与二级页面转场

  • 专辑页和艺术家详情支持保存平铺 / 列表显示偏好,重启后不再恢复默认列表状态。
  • 新增专辑封面大图浏览层,支持点击封面查看大图,并可点击空白区域或返回键关闭。
  • 对齐原版专辑平铺视觉,恢复普通专辑套框、所有歌曲无默认套框,以及宽屏设备上的封面尺寸。
  • 将专辑页列表切平铺动画调整为原版式 GridView LayoutAnimation:列表先退场,平铺按顺序淡入。
  • 优化艺术家详情专辑列表 / 平铺切换动画,减少背景纹理变化和“所有歌曲”图标跳动。
  • 接入二级页面预测性返回手势,专辑详情、艺术家详情、播放列表详情及对应标题栏支持跟手返回。
  • 修复喜欢歌曲、文件夹、播放列表详情返回时白底闪烁或空页面闪现的问题。
  • 修复艺术家详情中进入具体专辑时前进 / 返回闪烁,以及返回时直接跳回艺术家总页的问题。
  • 恢复艺术家根列表和艺术家专辑列表点击高光。

设置、搜索与项目整理

  • 新增自定义艺术家分隔符设置,支持按用户配置聚合艺术家、专辑和搜索展示。
  • 清理一批历史 lint 与资源类型问题,包括 Media3 unstable API 标记、Compose 字符串读取、selector 资源目录和自定义 View styleable 声明。
  • README 更新为 2.1.0 版本说明。

完整变更记录

v2.0.0...v2.1.0

Don't miss a new SmartisanMusic-Revived release

NewReleases is sending notifications on new releases.