前言
不知道是否还有人记得,7年前的那个 「Android开源在线音乐播放器——波尼音乐」?
本来只是作为毕设项目,没想到很多人感兴趣,就断断续续的在维护,当时在网络上找到了一个百度开放的在线音乐 API,勉强实现了本地 + 网络播放能力。
可惜没过多久 API 就被百度关闭了,从此以后便黯然失色,一度沦落为本地播放器,在这个万物互联时代显得有点落寞,我也因此没有太多更新的动力。
最近无意间发现开源社区已经有大神发布了「网易云音乐 API」,喜出望外,遂有了重整旗鼓的想法,顺便对之前的架构做一次重构,来一次脱胎换骨的升级!
经过3个多月断断续续的开发,今天,它来了!
展示
视频
截图
功能
后续可能会根据大家的反馈增加或调整功能
本地功能
- 基于 Media3 + ExoPlayer 构建播放能力
- 添加和播放本地音乐文件
- 专辑封面显示
- 歌词显示,支持拖动歌词调节播放进度
- 通知栏控制
- 桌面小组件
- 夜间模式
- 定时关闭
在线功能
- 登录网易云(验证码+扫码)
- 同步网易云歌单
- 每日推荐
- 歌单广场
- 排行榜
- 搜索歌曲和歌单
- 添加歌曲到歌单
- 喜欢歌曲
- 下载歌曲
- 管理歌单
- 设置在线播放/下载音质
体验
欢迎大家体验,如果发现功能问题或兼容性问题,可以在本文评论或者 GitHub Issue
环境要求
- Android 手机(系统版本为 Android 6.0 及以上)
- 电脑(非必须)
安装步骤
- 搭建网易云服务器
由于我们使用的是非官方 API,因此需要自行搭建 API 服务器。
打开服务端项目 NeteaseCloudMusicApi (或 NeteaseCloudMusicApiBackup) 主页,根据项目说明安装并运行服务,需要确认电脑和手机处于同一局域网 - 安装 APP
点击下载最新安装包 - 设置域名
打开 APP,点击左上角汉堡按钮,打开抽屉,点击「域名设置」,输入步骤1中的地址(包含端口) - 设置完成即可体验
没有电脑,如何体验?
使用电脑的目的是为了部署后端 API 服务,其实我们的 Android 手机也可以作为服务器!
- 安装
Termux
这是 Android 平台下的一个开源的终端模拟器,GitHub 下载地址 - 安装
nodejs
启动Termux,执行pkg install nodejs命令安装nodejs
完成后可通过node -v确认是否安装成功 - 运行网易云服务器
在Termux中执行npx NeteaseCloudMusicApi@latest命令安装并运行网易云服务器
看到控制台打印server running @ http://localhost:3000即表示运行成功 - 设置域名
打开波尼音乐APP,输入域名http://localhost:3000/并重启即可
源码
ponymusic: An Android online music player like NetEase Cloud Music, based on Media3 and ExoPlayer
欢迎感兴趣的朋友 Star、Fork、PR,有你们的支持,我会非常开心😄
依赖
站在巨人的肩膀上
在线服务
开源技术
- 播放器:Media3 + ExoPlayer
- 页面: MVVM
- 网络: Retrofit
- 数据库: Room
- 依赖注入: Hilt
- 图片: Glide
- 统计&崩溃收集: Firebase
- 路由框架: wangchenyan/crouter: 支持组件化的 Android 路由框架
- 歌词控件: wangchenyan/lrcview: Android beautiful draggable lyric view library
- 启动任务: wangchenyan/init: Android 启动任务调度
- 通用库: wangchenyan/android-common: 个人使用的 Android 通用库
- RecyclerView Adapter: wangchenyan/radapter3: A multitype adapter for Android recyclerview