AURALIS 音澜 的使命是打破 Android 底层音频接口的传统妥协。针对原生系统元数据高频错报、AudioFlinger 强制混音 SRC 劣化的通病,项目从零构建了自适应源码直通引擎与双层防抖缓存架构。不仅在技术层面上攻克了高频切歌下的时序竞争乱象,更在视觉层面上将声明式流体美学与硬核发烧工作台完美结合。
- 🔌 全局自适应 USB 源码直通 (Dynamic Bit-Perfect Output) 彻底绕过 Android 系统的 AudioFlinger 混音器。深度适配 Android 14+ 规范,实时抓取底层数据库真值(如 24bit/192kHz),并与外接 USB DAC 进行最高规格的“硬件握手”,点亮全屏金标,拒绝 SRC 劣化。
- 🛠️ 突破系统限制的“真值”解析 (True-Bit Extraction)
不再受限于系统
MediaMetadataRetriever经常错报 48kHz 的通病。深度结合MediaExtractor与底层数据库(jaudiotagger),精准挖掘并展现真实的母带级采样率与位深。 - ⚡ 全新 Media3 驱动与 Offload 硬件卸载
全面拥抱新一代播放内核。完美支持高码率 FLAC/WAV/DSD 的超大内存防卡顿缓冲,并在非直通状态下智能开启
Audio Offload,实现丝滑的无缝播放与极致省电。
- 🌊 三级瀑布流智能封面引擎 (Waterfall Cloud-Meta)
无惧残缺的本地元数据。优先获取 Apple Music (iTunes) API 的
800x800顶级无损原图,网易云音乐 API 无缝兜底,自研极光流体算法渲染终极防线。 - 🎤 全网双擎滚动歌词 (Dual-Engine Synced Lyrics)
网易云 API 优先,酷狗音乐无缝降级。在线抓取后强制压缩为
.webp与.lrc永久持久化至本地缓存,一次联网,终身离线秒开。
- 🚄 双层防抖缓存引擎 (Ultra-Fast Caching)
内置自研
AudioCache单例。采用LruCache(RAM) + 磁盘静态文件双层缓存。智能过滤系统虚构的脏图,通过RGB_565强效节省 50% 内存。即使面对上千首无损曲库,列表滚动依然绝对丝滑。 - 🛡️ 强悍的双赛道并发防御 (Dual-Track Concurrency)
在毫秒级的快速切歌中,彻底消灭时序竞争乱象(Race Condition)。采用协程作用域斩杀机制配合
500ms智能防抖,彻底杜绝歌词串台、接口风控与脏数据写入。
- 🎛️ 沉浸式发烧工作台 (Audiophile Dashboard) 全面重构大圆角、毛玻璃与半透明呼吸感 (Glassmorphism) 的全屏设置与播放界面。内置 ReplayGain 动态响度平衡、专业五频段 EQ 均衡器与 A-B 循环硬核功能。
- 🏆 发烧级音质分级与专属配色 (Audiophile Tagging) 严苛的音质漏斗算法。从 DSD、DXD 到 Master、Hi-Res+。为顶级格式定制了兼顾深色/浅色模式的高对比度 UI 标签(如 DSD 的“母带深橙”,Hi-Res 的“发烧金黄”)。
- 📊 极客级详细信息面板 (Geek-Level Info) 一键查看硬核音频档案:编码格式、动态回放增益 (ReplayGain)、空间音频声道检测 (Spatial Audio/AV3A 12声道)、文件修改时间以及精准的听歌足迹记录。
graph TD
A[UI 表现层: Jetpack Compose] --> B[内核驱动层: AndroidX Media3 ExoPlayer]
B --> C[数据持久层: Room Database]
A --> D[数据并发控制: Coroutines & Flow]
B --> E[音频解析层: MediaExtractor / jaudiotagger]
D --> F[网络异步层: OkHttp3 & Gson]
- UI 框架: Jetpack Compose 100% 纯声明式构建 (Material Design 3)
- 内核驱动: AndroidX Media3 (ExoPlayer 内核)
- 音频解析:
MediaExtractor,MediaMetadataRetriever,jaudiotagger - 异步并发: Kotlin Coroutines & Flow (自适应切换
Dispatchers.IO/Main) - 本地存储: Room Database (基于破坏性迁移策略升级多张关联表)
- 网络请求: OkHttp3 (15s 超时拉长防断链路) & Gson
AURALIS 重点解决了传统 Android 音视频开发中长期存在的两大痛点:底层数据源污染 与 高频异步读写竞争。
在传统架构中,读取音频规格、提取缩略图、查询本地数据库往往会导致多次磁盘 IO。AURALIS 在深度扫描过程中:
- 仅触发一次物理 IO 操作,利用
jaudiotagger与MediaExtractor异步泵出物理位深、真实采样率与内嵌 Meta 标签。 - 扫描数据直接通过 Room 进行冲突忽略 (
OnConflictStrategy.IGNORE) 入库,从源头拯救系统索引被污染的“真值”。
用户高频切歌或快速滚动列表时,会瞬间并发数十个网络封面/歌词查询请求。
- AURALIS 充分利用了 Compose
LaunchedEffect的 Key 值联动机制,一旦audioPath变更,上一个未完成的独立请求赛道将被瞬间强行 cancel 斩杀。 - 核心写入逻辑配备
Mutex互斥锁,即使网络回流存在延迟,也严格拒绝脏数据和串台歌词写入当前物理磁盘。
AURALIS 内部集成了基于低延迟 AudioTrack (PERFORMANCE_MODE_LOW_LATENCY) 构建的 Socket 接收端,可将手机转化为 PC 的有线无损发烧外置声卡:
- 进入 App 「设置」
$\rightarrow$ 打开 PC 有线音箱模式(服务将自动探测并监听8899端口)。 - 将手机通过数据线连接至电脑,确保 USB 调试 已激活。
- 在电脑端控制台运行 adb 逆向端口转发命令:
adb reverse tcp:8899 tcp:8899
- 电脑端声卡推流服务开启后,音频流将通过有线链路以 44.1kHz/16bit 双声道 PCM 无损泵入手机,实现几乎零延迟的推流同步体验。
本项目采用 GNU GPLv3 许可证开源,一切底层改动及优化必须保持开源。