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

[送码] 给 Navidrome 写的安卓播放器 Mu3ic:现代 UI、智能歌单、混音、断网也能听,基础版免费

  •  1
     
  •   aslehx · 7h 31m ago · 468 views

    我的歌放在家里服务器上的 Navidrome 里,五千多首,标签都是自己整理的,上个月还让 Agent 批量标准化一遍。电脑上听没问题,手机上一直没找到用着顺手的客户端,于是便有了Mu3ic。

    Mu3ic

    先说明一下:Mu3ic 是播放器,连的是你自己搭的服务器,不提供任何音乐。Navidrome 之外,兼容 Subsonic / OpenSubsonic 的服务端也能连。原生 Kotlin + Jetpack Compose ,安卓 7.0 以上,安装包 8 MB 左右。

    为什么自己写

    安卓上的 Subsonic 客户端其实不少,我前后装过好几个。

    音流功能比较全,但界面不够现代,用起来不顺手。界面现代的是 Symfonium ,功能也全,可它同时要管本地文件、网盘、Plex 、Jellyfin ,对 Navidrome 的适配反而一般,缓存机制也不好用;设置项多到要专门花时间调,买它还得走 Google Play 。开源的那几个,要么界面停在好多年前,要么能做的事太少。

    我要的其实就几样:界面好看、好用,天天要用的东西,光这一条就筛掉了大半播放器;打开要快;只管连服务器听歌,别的不管。所以 Mu3ic 从一开始就定成只做流播,不扫描手机里的本地文件。手机上存的缓存和下载,都只是为了断网的时候还能接着听。

    写到现在,我觉得它和别的客户端最不一样的有三点:

    • 界面:整套界面是自己设计的,不是 Material 默认那一套,滑动和转场都跟手,下面的截图都是真机上的样子
    • 智能歌单:在手机上就能建、能改,用的是一个“看得懂”的按钮式规则编辑器,不用去服务器上写 .nsp 文件
    • 混音:按你的播放记录、收藏和曲库标签自动组歌,每次点都重新采样

    下面按我写它时想解决的事一件件说。

    曲库大了,翻起来要等

    五千多首歌,每翻一页都要等服务器返回,滑快了就是一片空白。

    Mu3ic 在手机上存一份曲库索引,整点和服务器同步一次。按单曲、专辑、歌手翻都是读本地,滑多快都不用等。搜索也是这三个维度一起出。

    曲库和歌单

    打开 App 先看到的是首页,三排卡片:

    • 最近播放:记的是你从哪开始播的,歌单、专辑、混音、最爱都算
    • 最近添加:单曲和专辑,同一天入库的同一张专辑会并成一张卡
    • 最近喜爱:单曲、专辑、歌手

    再往下是听歌统计:今天播了多少、连续听了几天、这周的曲线,按住曲线能看某一天和上周同一天的对比。

    首页

    首页下半

    外语歌,想知道这句在唱什么

    歌词逐行滚动,外语歌下面直接跟着中文翻译(服务器上的歌词带翻译就能显示)。

    拖进度条的时候,手指停的那一句会浮出来:第几句、原文、译文。想回到某一句,看准了再松手就行,不用来回试。歌词这些都是基础版就有的。

    拖动浮出歌词

    歌词页

    地铁里、电梯里,网一断就停

    听过的歌边播边存,还会提前缓存下一首。连不上服务器的时候,接着播缓存里的;换到一首没缓存的,等 10 秒还连不上就跳到下一首有缓存的。

    打开离线模式之后,App 一个网络请求都不发。没缓存的歌会变灰,能播哪些一眼就知道。

    离线

    连接状态

    专辑和歌单页,想好看一点

    专辑、歌手、歌单页都把封面做成页头,名字和按钮收在一座浮岛里。歌单里如果整张专辑都在,会并成一张专辑卡,不用一首首往下翻。

    详情页

    播放页,想要安静一点,或者信息多一点

    播放页分极简和详细两档,每档两款皮肤,一共四款:

    • 极简:滑封面(左右拖封面切歌)、衬底(封面铺满上半屏)
    • 详细:标准(操作台,均衡器、倍速、定时、输出都在手边)、数据(大号时间加格式、码率、播放次数)

    四款皮肤

    衬底和数据两款的进度条画的是这首歌的真实波形,副歌在哪一眼就看到。每首分析一次就存下来,下载过、缓存过的歌直接用本地音频算,不多费流量。这两款皮肤和波形属于 Pro ;滑封面和标准是基础版的,进度条是一根细线。

    真实波形

    智能歌单,不想去服务器上写文件

    Navidrome 本来就支持智能歌单,但要在曲库目录里放一个写满 JSON 规则的 .nsp 文件。Mu3ic 里可以直接新建:选一个模板(年代 × 语言、歌手代表作、流派、最近 N 天、高分,或者照着一个现有的歌单改),再加减条件,「满足全部」还是「满足任一」点一下就切。编辑的时候底部实时显示预计有多少首,这个数用的是手机上的曲库索引,不用等服务器。

    新建智能歌单

    自己建的智能歌单,以后可以在「⋯」里接着改规则。来自 .nsp 文件的那些照样能听,只是规则改不了(改了也会被下次扫描覆盖)。

    规则编辑

    浏览和播放智能歌单是基础版就有的,规则编辑器属于 Pro 。

    混音,每次听都不太一样

    混音是 App 自己按打分采样出来的播放列表,点一次重新抽一次:

    • 为你:常听热曲、冷门佳作、最近混音、高分混音
    • 最爱:最爱混音、最爱专辑混音、最爱歌手混音
    • 按标签:单个歌手、流派、语言、年代( 80s 、90s……)各自一个
    • 长按任意一首歌,可以「以这首开混音」,找同歌手、同流派、同语言同年代的歌接着放

    混音

    按标签混音

    混音很吃曲库标签,标签整理得越好越好用,具体要哪些标签写在后面的「注意事项」里。混音属于 Pro 。

    免费和 Pro

    基础版是完整的播放器:不限时,没有广告,不用注册。上面说的曲库、搜索、首页、歌词、缓存和离线模式、详情页、两款免费皮肤,都是基础版就有的。另外还有歌单、收藏、评分同步回服务器,听歌记录回传,播放键长按停止,应用内更新(下载后先校验签名再装)。

    Pro 解锁这些:

    • 下载库:专辑、歌单、歌手、单曲整份下载,最爱自动下载,离线时封面和歌词也在
    • 混音、智能歌单规则编辑器
    • 波形进度条和衬底、数据两款播放页皮肤,均衡器
    • 三种桌面小组件(播放条、播放来源、听歌统计),歌单和混音的桌面快捷方式
    • 多服务器主备自动切换、切换应用图标

    下载库

    App 里可以直接买,跳到手机浏览器用支付宝付。首发一个月推广价 ¥18 (原价 ¥38 ),到 11 月 5 日。一次买断,一码一机,每年可以自己换绑两次设备。

    注意事项

    Navidrome 版本:大部分功能走的是 Subsonic 接口,老版本也能用。下面几项用到了 Navidrome 自己的接口,要 0.64.0 或以上:

    • 新建、编辑智能歌单
    • 首页的听歌统计(读的是服务器上的播放记录,所以同一个账号在别的设备上听的也算)
    • 语言混音(语言只有 Navidrome 自己的接口里有)

    版本不够时这几项用不了(建智能歌单会提示服务器不支持,语言那一节混音不出),别的照常用。

    混音要哪些标签:

    • 流派:曲目的 GENRE ,多个流派也认
    • 语言:LANGUAGE ,用 ISO 639-3 的三字母码( eng 、cmn 、jpn 、kor 、yue……),这个是 Navidrome 内置识别的标签
    • 年代:曲目的年份( DATE / YEAR )
    • 歌手:单个歌手混音只给「收藏了、而且曲库里不少于 50 首」的歌手出

    流派和语言不足 20 首的不单独出卡。因为太依赖标签,底栏的「混音」 tab 默认是关的,在设置 → 底栏里打开;首页的四张混音卡不受这个开关影响。

    领码

    先在 1 楼放 10 个 Pro 码,先到先得;用完了会在楼里再放一批。一码一机,激活后就绑在这台手机上了,所以一人拿一个就好。用掉了麻烦在评论里回一下用掉的码,后面的人就不用白试了。

    激活:设置 → 关于 → Pro → 输入激活码。

    隐私

    • 激活时只发激活码,和一个加盐哈希过的设备标识(由 Android ID 算出来,换不回原值)
    • 购买时,建单只发项目名,查单只发订单号;付款在支付宝完成,我拿不到付款人的任何信息
    • 检查更新不带任何标识
    • 除此之外什么都不收集:没有统计,没有广告,没有崩溃上报。曲库和播放记录只在你自己的服务器和手机上

    最后

    基础版免费

    有问题、有想要的功能,直接在这里回我就行。如果您喜欢,可以 APP 内购买 Pro 会员解锁完整体验,首月仅需3818 买断,感谢支持。

    15 replies  •  2026-10-06 01:24:17 +08:00
    aslehx
        1
    aslehx  
    OP
       7h 30m ago
    MU3-56ED-7369-M7NX
    MU3-EM73-KYSY-6KK3
    MU3-RM13-KADZ-PVZ4
    MU3-96C4-0RAK-PDS3
    MU3-QRWC-G3ZH-WAA1
    MU3-95Z8-GVR8-5F9A
    MU3-KHF0-0B06-QHVE
    MU3-9CJF-1QM6-95G1
    MU3-W4GD-4VEK-FN3A
    MU3-RVCE-NQEJ-ZQKE
    DeliMG
        2
    DeliMG  
       7h 23m ago via iPhone
    MU3-EM73-KYSY-6KK3
    已用
    sleek7671
        3
    sleek7671  
       7h 20m ago
    MU3-95Z8-GVR8-5F9A ,感谢,已经使用
    marcoseaver
        4
    marcoseaver  
       5h 52m ago
    MU3-96C4-0RAK-PDS3 已用,谢谢。
    aslehx
        5
    aslehx  
    OP
       5h 38m ago
    @marcoseaver @sleek7671 @DeliMG
    感谢支持🙏,后面会持续更新,更新会在 APP 内推送
    snakelhb
        6
    snakelhb  
       5h 35m ago via Android
    MU3-RVCE-NQEJ-ZQKE ,感谢,已经使用
    lockheart
        7
    lockheart  
       5h 27m ago via iPhone
    MU3-RM13-KADZ-PVZ4 已用,感谢
    aslehx
        8
    aslehx  
    OP
       4h 30m ago
    @snakelhb @lockheart
    感谢支持🙏
    aslehx
        9
    aslehx  
    OP
       4h 28m ago
    目前第一批赠码还有:MU3-56ED-7369-M7NX ,未被使用,有需要赠码的可以留言,明天会再放一批 pro 激活码
    Mystery0
        10
    Mystery0  
       3h 34m ago via Android
    MU3-56ED-7369-M7NX 已用,谢谢
    Mystery0
        11
    Mystery0  
       3h 25m ago via Android
    初步用了一下,很好用,不过歌词部分似乎缺失的比较多,例如播放页面不能切换成显示歌词(不显示专辑图片),现在的歌词显示是弹出式的,点开不能滚动查看,返回就关闭了,桌面歌词也没看到(手机上的话桌面歌词算是刚需了)。整体还是比音流好多了,不管是界面还是流畅度这些。
    app 目前只能网站和 GitHub 下,有打算上 play 吗?
    Mystery0
        12
    Mystery0  
       3h 22m ago via Android
    还有一个严重问题!设置界面那些配置项点击事件和滚动冲突很严重,例如我想要滚动设置界面,但是因为第一下点击按到了那些按钮上,结果最终响应事件是点击而不是滚动,导致我要滚动必须要严格点到非按钮区域,很难受
    aslehx
        13
    aslehx  
    OP
       3h 2m ago   ❤️ 1
    @Mystery0 谢谢使用,也谢谢指出这些不足。目前歌词主要是按我自己曲库的情况做的,确实不够完善。
    - 点播放页的封面可以打开完整歌词,支持滑动、点某一行跳转和双语切换。不过手动滑动后停 3 秒会自动回到当前行,您说的「不能滚动」可能就是这个,我会改得更顺手,也会加一个能一直停在歌词上的显示方式。双语歌词目前支持两种格式:同一时间上原文和译文各一行,或者原文、译文分成两份各自带时间轴。歌词是从 Navidrome 读的,如果您那边有显示不对的歌,方便的话发个例子给我,我针对性适配。
    - 您对桌面歌词的需求已经记录在案,会和桌面插件的优化一起做。
    - Play 的话想上,但没有经验😂,准备先优化一轮再考虑。您有经验的话也欢迎指点一下
    aslehx
        14
    aslehx  
    OP
       2h 51m ago   ❤️ 1
    @Mystery0 好的收到,本地已经复现了这个问题,明天会出补丁,APP 内会推送更新
    ffalex
        15
    ffalex  
       1h 56m ago via Android
    求一个:bmllcmlza3lAZ21haWwuY29t
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   791 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 19:20 · PVG 03:20 · LAX 12:20 · JFK 15:20
    ♥ Do have faith in what you're doing.