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

用 Compose 写了一个 Android 音乐播放器 SubTune

  •  
  •   TaylorZ · Mar 7, 2023 · 4963 views
    This topic created in 1169 days ago, the information mentioned may be changed or developed.

    之前一直用网易云音乐,用着用着很多歌就没了,于是用 Navidrome 搭建了离线音乐库。在用过几个 Android 客户端后,萌生了自己写一个的想法。

    SubTune UI 全部基于 Compose 开发,适用于 Subsonic API ( 1.13.0 或更高版本)兼容服务器(SubsonicNavidromeAirsonic 等)。

    界面截图:

    目前支持的功能:

    • 浏览专辑和歌单
    • 搜索专辑和歌曲
    • 缓存播放过的歌曲
    • 设置最大比特率
    • 动态颜色

    计划支持的功能:

    • 浏览和搜索歌手
    • 显示歌词
    • 缓存播放进度

    项目地址:SubTune

    39 replies    2023-12-30 18:24:32 +08:00
    danRen
        1
    danRen  
       Mar 7, 2023
    测试了一下,好用
    Rrrrrr
        2
    Rrrrrr  
       Mar 7, 2023
    离线?
    whyrookie
        3
    whyrookie  
       Mar 7, 2023
    很不错
    neoshui
        4
    neoshui  
       Mar 7, 2023 via Android
    xiaoliang
        5
    xiaoliang  
       Mar 7, 2023
    做的不错
    TaylorZ
        6
    TaylorZ  
    OP
       Mar 7, 2023
    @Rrrrrr 这里的 [离线] 是指把音乐文件存储在自己的 Nas 上,不依赖如网易云音乐等音乐平台,数据在自己手上,不用担心歌曲下架的问题
    TaylorZ
        7
    TaylorZ  
    OP
       Mar 7, 2023
    @danRen 感谢支持
    TaylorZ
        8
    TaylorZ  
    OP
       Mar 7, 2023
    @whyrookie
    @AlexShui
    @xiaoliang
    感谢大家的支持
    azhangbing
        9
    azhangbing  
       Mar 7, 2023
    楼主的执行力可以 厉害厉害, 我是看了很多 demo 自己懒得写,Compose 可以的 绘制效率杠杠的 写起来也非常爽 因为项目里有 DSL 非常像 ,就是跨平台要完善 ,ios 还有问题
    加油吧 Google
    xujinkai
        10
    xujinkai  
       Mar 7, 2023
    试了一下,不错。
    提几个我自己的痛点给 op 参考:
    - 长按桌面图标的快捷方式:随机播放所有歌曲,歌手,自建的歌单等,一键播放对开车等场景很有用
    - 缓存:可以设置最大缓存大小,以及缓存目录
    - 桌面小组件
    TaylorZ
        11
    TaylorZ  
    OP
       Mar 7, 2023
    @azhangbing 是的,Compose 写起来很爽,跨平台短时间应该不太行,比 Flutter 进度慢了很多
    TaylorZ
        12
    TaylorZ  
    OP
       Mar 7, 2023
    @xujinkai
    - 随机播放,可以再具体描述下吗?
    - 设置最大缓存大小,这个后面会加的
    - 自定义缓存目录,目前项目里用的是 ExoPlayer 自己的缓存,缓存数据不是一个完整的音乐文件,只能由 ExoPlayer 才能解码播放,所以目前自定义缓存目录的意义不是很大
    - 桌面小组件,这个可以有
    xujinkai
        13
    xujinkai  
       Mar 7, 2023
    @TaylorZ
    不是安卓开发哈,我尽量描述的详细一些。
    长按桌面上的支付宝图标,不是有扫一扫、付钱这些快捷方式么,进一步可以通过长按拖动这些快捷方式把功能添加到桌面上。这样点击这个图标,可以一键进入扫一扫功能。
    对于自建曲库来说,有时候并不在意播放特定的歌曲,因为都是自己整理放进去的,比如开车时,就想快速听个响。也有时候会自己整理一些歌单,或者想按歌手之类的去播放。
    所以需求就是可以快速的开始随机播放所有歌曲,或者快速的开始播放某歌单、某歌手。

    我能想到的做法就是:
    - 长按桌面图标,有随机播放所有歌曲的快捷方式
    - 歌单列表以及歌手列表有右键菜单,可以选择把歌单 pin 到桌面上。

    这样本来需要进入软件中选择歌曲再播放,现在只要点一下屏幕上的图标就开始播放了。
    superedlimited
        14
    superedlimited  
       Mar 7, 2023
    那个公鸡头的专封好有趣,等下下班听一听。
    abcd191898105
        15
    abcd191898105  
       Mar 7, 2023 via iPhone
    我真在用 compose 仿开眼,正封装下啦刷新和上滑加载很多呢,来活了
    justincnn
        16
    justincnn  
       Mar 7, 2023
    简洁大气,比以前大厂做的还要养眼,lz 厉害啊
    TaylorZ
        17
    TaylorZ  
    OP
       Mar 7, 2023   ❤️ 1
    @xujinkai
    - 长按桌面图标,有随机播放所有歌曲的快捷方式,这个可以有,目前 Subsonic API 没有提供获取全部歌曲的接口,只有一个获取随机歌曲的接口,最大返回 500 首歌曲,500 首应该够了
    - 歌单 pin 到桌面上,这个可以有
    - 歌手 pin 到桌面上,目前 Subsonic API 没有提供获取歌手全部歌曲的接口,只能获取歌手 Top 歌曲,这个暂不考虑
    TaylorZ
        18
    TaylorZ  
    OP
       Mar 7, 2023
    @superedlimited
    截图是 Navidrome 提供的 Demo 帐户里面的数据
    服务器地址:demo.navidrome.org
    用户名:demo
    密码:demo
    TaylorZ
        19
    TaylorZ  
    OP
       Mar 7, 2023
    @justincnn 感谢支持,UI 是基于 Material 3 风格开发的
    of2
        20
    of2  
       Mar 8, 2023
    可以有歌词吗? navidrome 网页版都可以读到 tag 里面歌词的,可是 subsonic 客户端没见到支持的~
    TaylorZ
        21
    TaylorZ  
    OP
       Mar 8, 2023
    @of2 这个可以有
    washbrain
        22
    washbrain  
       Mar 8, 2023
    还没下下来使用,想问一下支持无缝播放吗?
    TaylorZ
        23
    TaylorZ  
    OP
       Mar 8, 2023
    @washbrain 目前不支持无缝播放
    TaylorZ
        24
    TaylorZ  
    OP
       Mar 8, 2023
    @of2
    Subsonic API 歌词接口拿到的歌词是去除了时间点,只能静态展示所有歌词,不能实现根据播放进度显示当前歌词,估计这也是很多 Subsonic 客户端不支持歌词的原因

    Navidrome 使用的是自己实现的接口,如果要实现根据播放进度显示当前歌词,那么只能单独适配 Navidrome
    suyuyu
        25
    suyuyu  
       Mar 8, 2023
    水果只能看着吗
    of2
        26
    of2  
       Mar 9, 2023
    @TaylorZ 就算静态歌词也算个好事了,不过看 navidrome 是有歌词的 api 的: https://github.com/navidrome/navidrome/issues/1840
    viazure
        27
    viazure  
       Mar 12, 2023
    蛮不错的,让我又将 navidrome 重新用了起来
    viazure
        28
    viazure  
       Mar 12, 2023
    希望主界面的播放控制栏可以优化一下,现在需要进入到歌曲播放界面才能切换上一曲下一曲,有点不太方便。
    Ccf
        29
    Ccf  
       Mar 12, 2023
    挺好用,期待楼主接手 subpetal
    TaylorZ
        30
    TaylorZ  
    OP
       Mar 13, 2023
    @viazure 好的,下一个版本就加
    TaylorZ
        31
    TaylorZ  
    OP
       Mar 13, 2023
    @Ccf 是这个吗? https://github.com/alexiscn/SubPetalApp ,这个是 iOS App
    TaylorZ
        32
    TaylorZ  
    OP
       Mar 13, 2023
    @of2 静态歌词功能已上线,Navidrome 内部接口使用的是另一套认证方式,与 Subsonic API 不兼容,无法单独适配 Navidrome
    TaylorZ
        33
    TaylorZ  
    OP
       Mar 16, 2023   ❤️ 2
    @viazure 播放控制栏优化已上线
    Ccf
        34
    Ccf  
       Jun 9, 2023
    目前安卓手机上的首选了,会弄 mac 版么?
    目前没有好用的播放 app
    Ccf
        35
    Ccf  
       Jun 11, 2023
    @TaylorZ
    能实现管理多个服务器地址么?
    现在默认只能添加一个。
    TaylorZ
        36
    TaylorZ  
    OP
       Jun 12, 2023
    @Ccf
    暂时没有计划支持 Mac ,后续可能会支持。
    管理多个服务器地址,这个可以有。
    Ccf
        37
    Ccf  
       Jul 11, 2023
    顺便加一个随机播放吧,自动生成几十首临时歌单之类的
    TaylorZ
        38
    TaylorZ  
    OP
       Jul 12, 2023
    @Ccf
    最新版( 1.3.0 )已经有这个功能了
    no13bus
        39
    no13bus  
       Dec 30, 2023
    真棒,有可以学习的项目了。最近想用 compose 写一个小的项目,之前用 react native ,感觉没有原生的好
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4557 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 75ms · UTC 09:59 · PVG 17:59 · LAX 02:59 · JFK 05:59
    ♥ Do have faith in what you're doing.