Skip to content

v3.4: 本地存储 (SAF) 双源支持、动态取色与架构深化

Choose a tag to compare

@Allenalonel Allenalonel released this 10 Nov 11:00
· 74 commits to main since this release

💾 本地设备存储(SAF)双源架构与离线播放 (ADR-0032b)

  • 本地 SAF 目录持久化授权:支持通过 Storage Access Framework (SAF) 挂载本地存储目录,确立 LOCAL_STORAGE_ID = 0L 双源拓扑,实现本地曲库毫秒级层级遍历与 SWR 缓存。
  • 跨源混合歌单与离线自愈:支持在同一歌单内混合收藏 WebDAV 远程与本地音频并无缝过渡切歌;本地存储断连/移除时自动置灰降级,重新授权后秒级自愈点亮。

🎨 全天候动态取色与沉浸式舞台黑胶光晕 (ADR-0032a)

  • HCT 感知色调推导与中性灰保护:基于 androidx.palette 推导深邃暗夜舞台背景(Tone 6~8)与石板墨炭色高对比排版(WCAG AAA >= 8.5:1);内置 isMonochrome 保护网,彻底根除黑白灰阶封面偏红偏暖问题。
  • 沉浸式舞台全屏播放器与双层光晕:28dp 超椭圆自然景深大封面,漫延双层高斯环境光晕,切歌时伴随 450ms 流体弹簧平滑渐变换肤;音质角标(Audiophile Specs)动态配色协调。

🔍 双源曲库统一增量索引与全文检索 (ADR-0033)

  • 统一本地媒体索引表:基于 media_track_index 建立复合 B-Tree 索引,毫秒级即打即搜双源音频;向未缓存目录穿梭时后台自动静默低并发增量同步。
  • 分段药丸搜索范围切换舱:新增硬件绘制的 SegmentedSliderPill,在“当前源”与“全部曲库”间零闪烁平滑滑动切换,单源模式严格源隔离。

🧹 物理清除 CUE 虚拟分轨与纯粹流式降维 (ADR-0034)

  • 物理剔除 4,500+ 行 CUE 模块:彻底移除 CUE 内存解析器与虚拟时间轴映射,终结进度条跳跃与切歌爆音风险,回归“单音频文件即单曲目”的 1:1 纯粹流式。
  • Room v8 数据库平滑迁移:自动化数据清洗废弃虚拟分轨字段,底层播放管道与测试表面积精简逾 50%。

🧱 仓储层与会话中枢深度解耦 (ADR-0035 ~ ADR-0039)

  • 跨源会话双轨解耦 (ADR-0035):彻底解绑在播源(activeServer)与浏览源(browsingServer),支持后台播放远程音频的同时自由浏览本地曲库。
  • 深度收拢媒体库仓储 (ADR-0036):合并目录与搜索浅层仓储为单一高内聚深度模块 MediaLibraryRepository。
  • 存储级联失效反转 (ADR-0037):提炼 StorageCascadeInvalidator 窄接口,彻底消除仓储环形依赖与 Application 容器向下转型。
  • 独立连通性追踪器 (ADR-0038):提炼 StorageReachabilityTracker 深模块,将服务器探活与故障自愈从歌单完全剥离。
  • 彻底剥离浏览游标 (ADR-0039):从播放会话与 DataStore 中拔除 lastBrowsingPath,彻底消除目录切换引发的频繁写盘风暴。

🎬 UI 动效与交互微规范深化

  • GPU 绘制阶段全屏容器形变:MorphingPlayerContainer 尺寸与圆角下沉至 GPU Draw Phase(graphicsLayer / drawBehind),杜绝每帧 CPU 重排,保障 120Hz 丝滑体验。
  • 多选排队与副标题规范内聚:DirectoryBrowserViewModel 内聚多选状态机并支持原子“下一首播放”;统一音轨行缺少元数据时兜底显示 "未知",严格维持 72dp 双行高度平齐。

📦 架构守门与包体积硬预算

  • 全量测试与体积守门:1,202 项单元测试 100% 通过;Release APK 总包体严控在 6.87 MB(预算 <= 7.5 MB),classes.dex 4.16 MB(预算 <= 4.25 MB),纯 64 位 arm64-v8a 现代高效架构。