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

2023-03-07 13:11:44 +08:00
 TaylorZ

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

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

界面截图:

目前支持的功能:

计划支持的功能:

项目地址:SubTune

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

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

这样本来需要进入软件中选择歌曲再播放,现在只要点一下屏幕上的图标就开始播放了。
superedlimited
2023-03-07 17:18:32 +08:00
那个公鸡头的专封好有趣,等下下班听一听。
abcd191898105
2023-03-07 19:58:37 +08:00
我真在用 compose 仿开眼,正封装下啦刷新和上滑加载很多呢,来活了
justincnn
2023-03-07 19:59:56 +08:00
简洁大气,比以前大厂做的还要养眼,lz 厉害啊
TaylorZ
2023-03-07 21:49:36 +08:00
@xujinkai
- 长按桌面图标,有随机播放所有歌曲的快捷方式,这个可以有,目前 Subsonic API 没有提供获取全部歌曲的接口,只有一个获取随机歌曲的接口,最大返回 500 首歌曲,500 首应该够了
- 歌单 pin 到桌面上,这个可以有
- 歌手 pin 到桌面上,目前 Subsonic API 没有提供获取歌手全部歌曲的接口,只能获取歌手 Top 歌曲,这个暂不考虑
TaylorZ
2023-03-07 21:53:27 +08:00
@superedlimited
截图是 Navidrome 提供的 Demo 帐户里面的数据
服务器地址:demo.navidrome.org
用户名:demo
密码:demo
TaylorZ
2023-03-07 22:07:08 +08:00
@justincnn 感谢支持,UI 是基于 Material 3 风格开发的
of2
2023-03-08 09:03:47 +08:00
可以有歌词吗? navidrome 网页版都可以读到 tag 里面歌词的,可是 subsonic 客户端没见到支持的~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/921870

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX