爱意满满的作品展示区。
sodayo

开源一个 Android 原生 Subsonic 音乐客户端, 适用于 NAS 用户

  •  
  •   sodayo · Jun 5 · 473 views
    This topic created in 42 days ago, the information mentioned may be changed or developed.

    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 客户端的功能差异点;

    8 replies    2026-07-07 12:29:45 +08:00
    sodayo
        1
    sodayo  
    OP
       Jun 5
    不知道为啥这个主题明明是上午发的, 但是个人页面中显示发布于 2 天前, 并且直接到了这个节点的第 4 页. 是因为账号降权了么?
    abc8678
        2
    abc8678  
       11 days ago via Android
    试了一下,双语歌词还没搞好
    sodayo
        3
    sodayo  
    OP
       11 days ago via Android
    @abc8678 感谢反馈意见,双语歌词的功能目前是没有的,将加入到开发路线图中。
    abc8678
        4
    abc8678  
       11 days ago via Android
    试用了几款类似的 app,感觉大多数类似的软件都是围绕着专辑来铺开的,而不是对于歌曲来的,不太符合习惯。比如,我要么找周杰伦的歌曲,要么找某一首具体的歌曲,一般不会想到专辑啥的。吐槽完毕
    sodayo
        5
    sodayo  
    OP
       10 days ago
    @abc8678 这个实际上是 Subsonic 的设计哲学问题, 它假设用户搭建的是音乐收藏库, 而音乐收藏库正是围绕"艺术家->专辑->曲目"展开的, 和流媒体的逻辑不太一样. 不过对于搜索功能来说并没有区别, 我的 APP 和其他 Subsonic 客户端, 也一样是可以搜索到具体曲目的.
    abc8678
        6
    abc8678  
       10 days ago via Android
    @sodayo 逛首页的时候看见喜欢的歌名,实际上那是同名专辑。点击并没有开始播放,而是展开文件夹,实际的歌曲在专辑内,要二次点开。一下子颠覆习惯
    sodayo
        7
    sodayo  
    OP
       10 days ago via Android
    @abc8678 确实如此...首页展示的三大块,随机专辑,最近添加和最常播放,显示的都是专辑,需要点击进去才能看到曲目。原因也是一样,由于 Subsonic 是这样设计的,所以各个服务端,比如 Navidrome ,以及我们客户端的开发者,也就约定俗成按照这样设计了😂并且特别是对我们客户端开发来说,实际上”最常播放曲目”这个接口压根不存在,只能展示最常播放专辑。你可以通过把曲目添加到收藏和歌单,以及在首页钉选歌单的方式快速找到自己喜欢的歌。
    abc8678
        8
    abc8678  
       10 days ago via Android
    我也是用 navidrome.看来要么接受,要么我也自己造轮子了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2800 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 12:56 · PVG 20:56 · LAX 05:56 · JFK 08:56
    ♥ Do have faith in what you're doing.