Gramophone:把 Android 音乐播放器做回它该有的样子
一个使用 media3 和材料设计库构建的健全的音乐播放器,严格遵循 android 的标准。
秒懂
- 它是什么?
- Gramophone 是一款基于 Media3 与 Material Design 的开源音乐播放器,严格遵循 Android 平台规范。它轻量、克制,但也在编解码器支持上做出了明确取舍,适合追求原生体验的用户。
- 适合谁用?
- Gramophone 适合那些受够了臃肿播放器、希望界面与交互完全贴合 Android 原生规范的轻度至中度用户。它不适合依赖高级音频格式(如 32 位 FLAC、xHE-AAC)或需要内置均衡器的用户,因为其编解码依赖系统,且没有自带 EQ。
- 能商用吗?
- 可以,但有条件。GPL-3.0 是 copyleft 许可证:如果你分发包含它的软件,就必须以同一许可证公开该软件的源代码。只在内部运行、不对外分发,则不会触发这项义务。
- 还在维护吗?
- 在维护。仓库最近一次提交在 2 天前。
- 用什么语言写的?
- 主要是 Kotlin(依据 GitHub 的语言统计)。
以上回答依据项目的 GitHub 数据(最近同步于 2026年9月14日)和我们的分析,不构成法律意见。
开源项目深度解析
一个反潮流的定位:不堆功能,只守规范
Gramophone 的 README 第一句话就表明了立场:a sane music player。它用 Media3 与 Material Design 库构建,并声称严格遵循 Android 标准。在国产播放器普遍内置在线音乐、社交分享、甚至短视频的年代,这个定位显得有点另类。它不提供云同步,不搞个性化推荐,只做一件事:播放你设备上的音乐。目标用户很明确,就是那些希望播放器像系统自带应用一样干净、稳定、不越权的 Android 用户。它不追求功能数量,而是追求每个功能都符合 Android 的设计语言和交互习惯。
MediaStore 与系统编解码:它的架构核心是“借用”
Gramophone 的音乐库完全基于 MediaStore,也就是 Android 系统自带的媒体数据库。这意味着它不自己扫描文件系统,而是读取系统已经索引好的数据。好处是启动快、占用低,不需要维护自己的数据库。坏处也直接:系统没扫到的文件,它就看不到。README 的 FAQ 里明确提到,.opus 文件在 Android 10 之前不会被系统扫描,而 32 位 FLAC 只在 Android 14 之后才能播放。音频解码同样依赖系统 codec,Gramophone 只内置了一个极轻量的 Java ALAC 解码器作为例外。这种“借用”策略让 APK 体积更小,但也把兼容性的决定权交给了操作系统。
构建流程:比一般开源应用多两个步骤
构建 Gramophone 需要最新 beta 版 Android Studio。第一步是拉取子模块,因为 media3 是以 git submodule 形式引入的,必须先运行 git submodule update --init --recursive。第二步是创建 package.properties 文件,在其中写入 releaseType=SelfBuilt,放在仓库根目录。这个文件的作用是标记应用包的类型,也就是区分官方构建与自建版本。之后用 Android Studio 导入签名即可构建。整个过程不算复杂,但比大多数单仓库项目多了一步手动配置文件。如果你之前只构建过普通 Gradle 项目,这个额外步骤可能会让你愣一下。
隐藏的 60 秒门槛:一个容易被忽略的默认行为
Gramophone 默认隐藏时长少于 60 秒的歌曲。这个设计可能是为了过滤铃声和通知音,但没有在安装时提示。如果你发现自己曲库里的短曲目不见了,需要到 设置 > 行为 里把最小歌曲时长改为 0。另一个相关问题是文件夹黑名单,如果某些歌曲依然缺失,先检查是否被排除在 行为 > 文件夹黑名单 之外。README 还建议重启手机并等待几分钟,因为系统媒体数据库需要重新扫描。这三个步骤说明了一个事实:Gramophone 对媒体库的控制力有限,它只是系统数据库的客户端。
格式支持的真实边界:不是播放器不行,是系统不行
Gramophone 的格式支持完全取决于设备。README 列出了一串条件:int32 FLAC 需要 Android 14,FLAC 官方支持从 Android 8 开始,xHE-AAC 需要 Android 9,AC-3/E-AC-3/AC-4 需要设备有授权解码器。这意味着同一款应用在不同设备上的表现可能天差地别。如果你的手机是旧机型,播放某些文件时会直接无声或报错。唯一的例外是 ALAC,因为内置了解码器。这个设计是合理的小体积策略,但用户必须清楚自己的设备能力。如果你经常下载高规格音频,Gramophone 可能不是最合适的选择。
功能清单:该有的都有,但不多给
Gramophone 的功能列表很克制:搜索、列表与网格视图、按文件夹浏览、自然排序、播放列表、同步歌词(LRC、TTML、SRT,甚至支持逐字卡拉OK同步)、ReplayGain 2.0 完整支持,以及调用系统或第三方均衡器。值得注意的是,它没有内置均衡器,而是把这一块交给外部应用。歌词同步支持多种格式,这在开源播放器里算比较完整的。ReplayGain 2.0 的支持也是加分项。整体看,这些功能都是本地音乐播放器的刚需,没有多余的社交或在线服务。
替代方案:与 Retro Music 和 Vinyl 的差异
在开源 Android 播放器里,Gramophone 的主要对手是 Retro Music 和 Vinyl。Retro Music 同样基于 Material Design,但提供了更多视觉定制选项,比如主题色、专辑封面样式等,而且内置了简单的标签编辑器。Vinyl 则更接近 AOSP 风格,但开发活跃度较低。Gramophone 与它们的核心差异在于对 Media3 的使用和对 Android 规范的严格遵循。Media3 是 Google 官方维护的媒体库,这意味着 Gramophone 的播放引擎会随 Android 版本更新而获得更好的兼容性,而 Retro Music 和 Vinyl 更多依赖自家或第三方播放核心。如果你看重长期维护和系统集成度,Gramophone 的架构更占优势,但如果你需要标签编辑这类额外功能,它就不如 Retro Music。
许可证与维护成本:GPL-3.0 下的自建自由度
Gramophone 采用 GPL-3.0 许可证。这意味着你可以自由修改和分发,但任何基于它的衍生作品也必须以同样许可证开源。对于个人用户,这没有实际限制,你可以自建 APK 并安装,无需任何额外费用。但如果你打算集成到商业产品中,GPL-3.0 的传染性会让很多公司望而却步。项目默认分支是 beta,最近一次发布是 1.1.2,更新频率看起来是每月一次左右。维护成本方面,由于依赖 Media3 子模块,升级时可能需要同步更新子模块引用,但整体来说,对于一个个人或小团队项目,这个维护负担不算重。
编辑结论
Gramophone 适合那些受够了臃肿播放器、希望界面与交互完全贴合 Android 原生规范的轻度至中度用户。它不适合依赖高级音频格式(如 32 位 FLAC、xHE-AAC)或需要内置均衡器的用户,因为其编解码依赖系统,且没有自带 EQ。采用前先确认你的设备 Android 版本与音乐文件格式,特别是 .opus 与 AC-3 文件。若你主力使用 Android 14 以下设备且收藏大量 32 位 FLAC,Gramophone 会让你频繁遇到静音或无法播放的问题。反之,若你的曲库以 MP3、AAC、普通 FLAC 为主,且追求极简与稳定,Gramophone 值得一试。
社区笔记