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

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

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

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

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

    界面截图:

    目前支持的功能:

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

    计划支持的功能:

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

    项目地址:SubTune

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

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

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

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