https://github.com/lwp2070809/speculonic-android
本 APP 最初构想和设计是在好几年前, 从今年开始借助 AI 进行重构, 在本地打磨了好几个月迭代到了 0.9 版本, 总算有自信开源了. 目前还在测试阶段, 主要是还没有测试除了 Navidrome 之外, 其他 Subsonic 服务器的兼容性. 除此之外已经和朋友使用了很长一段时间, 没有发现特别影响使用体验的 bug, 但还是仰赖各位 V 友提出意见和使用中碰到的问题, 来帮助我改善 APP.
设计理念
本 APP 基于 "将 App 作为远程 Subsonic 服务器的本地镜像" 的设计理念, 具备与远程 Subsonic 服务器同步与对比差异的能力, 同时具备本地播放器的高性能与扩展接口.
功能特性
- Android 原生开发: 基于 Android 原生 Jetpack Compose 和 kotlin 技术构建. 支持手机端与平板电脑的响应式自适应布局. 播放引擎为 ExoPlayer.
- Subsonic 本地镜像: 提供增量 Subsonic 元数据同步机制, 并持久化到本地数据库. 内置数据一致性校验, 能分析并修复已缓存音乐文件与远程 Subsonic 服务器中数据的差异.
- 车机蓝牙适配: 可以嗅探车机蓝牙广播与设备指纹来判断是否连接到车载蓝牙音频; 劫持底层 AVRCP 协议, 将歌曲实时同步歌词投送到车载屏幕.
- 主题系统: 支持深色主题. 播放界面可根据当前曲目封面执行动态色彩提取与对比度校验, 提供高斯模糊和微光渐变两种美观的播放器背景.
APP 截图和更多信息详见 GitHub 仓库的 README.
一些碎碎念:直到上个月我才发现已经有 Substreamer 这个开源 Android 客户端, 在元数据同步这块功能上已经基本覆盖了本 APP 的功能而且更完善, UI 也更美观, 说实话有点受打击, 只能安慰自己起码是原生开发性能更好; 之所以对车载蓝牙音频上投入很多精力开发, 是因为我听歌的 90%场景是在我的特斯拉汽车上面, 算是和别的 Subsonic 客户端的功能差异点;