# 随心音乐
[![](https://img.shields.io/badge/作者-jsyjst-blue.svg)](https://blog.csdn.net/qq_41979349)
### 随心音乐,是一款基于MVP+EventBus+Glide的应用,有兴趣的盆友欢迎Star,Fork!
## 前言
由于平日里自己是一个很喜欢听音乐的boy,所以在闲暇时间本着自己的兴趣去开发了这款音乐,中途遇到了很多的困难,但是都是通过自己不断探索下一步一步解决了问题。
## 实现功能
- [x] 本地音乐
- [x] 我的收藏
- [x] 网络歌曲下载
- [x] 最近播放
- [x] 在线搜索歌曲,专辑,在线歌曲播放
- [x] 专辑歌曲
- [x] 播放栏,播放进度条
- [x] 播放界面,歌手图片唱碟
- [x] 播放控制,暂停,上一首,下一首
- [x] 歌词显示
- [x] 播放模式,顺序播放,随机播放,单曲循环
- [ ] 听模块,包括歌单,排行榜等
- [ ] 看模块,包括推荐MV等
## 项目展示
### 动态图
<div align="left">
<img src="https://github.com/jsyjst/YuanMusicPlay/raw/master/screenshots/gif1.gif" height="650" width="350" >
<img src="https://github.com/jsyjst/YuanMusicPlay/raw/master/screenshots/gif2.gif" height="650" width="350" >
</div>
### 截图
<div align="left">
<img src="https://github.com/jsyjst/YuanMusicPlay/raw/master/screenshots/jpg1.jpg" height="650" width="350" >
<img src="https://github.com/jsyjst/YuanMusicPlay/raw/master/screenshots/jpg2.jpg" height="650" width="350" >
</div>
<div align="left">
<img src="https://github.com/jsyjst/YuanMusicPlay/raw/master/screenshots/jpg3.jpg" height="650" width="350" >
<img src="https://github.com/jsyjst/YuanMusicPlay/raw/master/screenshots/jpg4.jpg" height="650" width="350" >
</div>
<div align="left">
<img src="https://github.com/jsyjst/YuanMusicPlay/raw/master/screenshots/jpg5.jpg" height="650" width="350" >
<img src="https://github.com/jsyjst/YuanMusicPlay/raw/master/screenshots/jpg6.jpg" height="650" width="350" >
</div>
## 下载(5.0以上)
#### [apk下载](https://github.com/jsyjst/YuanMusicPlay/releases/download/YuanMusicPlay-v1.0/suixin-music-v1.apk)
## 项目Api
> 下面的请求中如果参数有songmid,都是得经过搜索歌曲或歌手后才能获得songmid,然后进行请求。不能获取到qq音乐的vip或者付费歌曲的播放地址,Api是通过fiddler4爬取网页端qq音乐获取的,如失效,请提出[issue](https://github.com/jsyjst/YuanMusicPlay/issues)。
### 搜索
#### 1.搜索歌手/歌曲
请求地址:https://c.y.qq.com
请求示例:[https://c.y.qq.com/soso/fcgi-bin/client_search_cp?p=1&n=2&w=泡沫&format=json](https://c.y.qq.com/soso/fcgi-bin/client_search_cp?p=1&n=2&w=泡沫&format=json)
说明:关键字为歌手就返回该歌手的歌曲,如果为歌曲就返回该歌曲列表
| 参数 | 说明 | 是否必须 | 默认值 |
| ------ | -------- | -------- | ------------------------------------------------- |
| p | 分页 | 否 | 默认为1 |
| n | 请求数量 | 否 | 默认为10 |
| w | 关键字 | 是 | 无 |
| format | 格式化 | 否 | 如果用Retrofit的Json解析的话记得一定要format=json |
#### 2.搜索专辑
请求地址:https://c.y.qq.com
请求示例:https://c.y.qq.com/soso/fcgi-bin/client_search_cp?p=1&n=2&w=邓紫棋&format=json&t=8
| 参数 | 说明 | 是否必须 | 默认值 |
| ------ | -------- | -------- | ------------------------------------------------------- |
| p | 分页 | 否 | 默认为1 |
| n | 请求数量 | 否 | 默认为10 |
| w | 关键字 | 是 | 无 |
| format | 格式化 | 否 | 如果用Retrofit的Json解析的话记得一定要format=json |
| t | 类别 | 是 | 没有默认值,如果为搜索专辑,则t为8。如果是搜索mv,t=12。 |
### 获取歌手图片
#### 1.根据歌手获取图片
请求地址:http://music.163.com
请求示例:[http://music.163.com/api/search/get/web?s=邓紫棋&type=100](http://music.163.com/api/search/get/web?s=邓紫棋&type=100)
说明:请求后将有歌手图片的字段,请求后的picUrl和img1v1Url就是图片地址
| 参数 | 说明 | 是否必须 | 默认值 |
| ---- | ---- | -------- | --------------- |
| s | 歌手 | 是 | 无 |
| type | 类别 | 是 | 无,但必须为100 |
**!!!注意**:有可能在网上能够请求到数据,但在实际代码中请求时却不能返回的情况(自己在开发中碰到),这时候别着急,只需要在网络请求时加上请求头"**User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36**"就能解决问题!
#### 2. 根据albumMID获取专辑图片
请求地址:[http://y.gtimg.cn](http://y.gtimg.cn)
请求示例:[http://y.gtimg.cn/music/photo_new/T002R180x180M000003c616O2Zlswm.jpg](http://y.gtimg.cn/music/photo_new/T002R180x180M000003c616O2Zlswm.jpg)
说明:请求示例其实有两部分组成,即固定地址+albumMid。
| 组成 | 值 | 说明 |
| -------- | -------------------------------------------------- | ------------------------ |
| 固定地址 | http://y.gtimg.cn/music/photo_new/T002R180x180M000 | 固定值,不需要改变 |
| albumMid | 在搜索专辑后,或者搜索歌曲会有albumMid这个字段 | 需要先搜索后得到albumMid |
### 获取播放地址
> 如果用的是Retrofit请求,则需要在请求时加上`encoded = true`的参数,不然请求时会出现-500001的错误。代码示例:
> ```JAVA
> @GET(Api.SONG_URL)
> Observable<SongUrl> getSongUrl(@Query(value = "data",encoded = true) >String data);
> ```
>
请求地址:https://u.y.qq.com
请求示例:[https://u.y.qq.com/cgi-bin/musicu.fcg?format=json&data=%7B%22req_0%22%3A%7B%22module%22%3A%22vkey.GetVkeyServer%22%2C%22method%22%3A%22CgiGetVkey%22%2C%22param%22%3A%7B%22guid%22%3A%22358840384%22%2C%22`songmid`%22%3A%5B%22`001X0PDf0W4lBq`%22%5D%2C%22songtype%22%3A%5B0%5D%2C%22uin%22%3A%221443481947%22%2C%22loginflag%22%3A1%2C%22platform%22%3A%2220%22%7D%7D%2C%22comm%22%3A%7B%22uin%22%3A%2218585073516%22%2C%22format%22%3A%22json%22%2C%22ct%22%3A24%2C%22cv%22%3A0%7D%7D](https://u.y.qq.com/cgi-bin/musicu.fcg?format=json&data=%7B%22req_0%22%3A%7B%22module%22%3A%22vkey.GetVkeyServer%22%2C%22method%22%3A%22CgiGetVkey%22%2C%22param%22%3A%7B%22guid%22%3A%22358840384%22%2C%22songmid%22%3A%5B%22001X0PDf0W4lBq%22%5D%2C%22songtype%22%3A%5B0%5D%2C%22uin%22%3A%221443481947%22%2C%22loginflag%22%3A1%2C%22platform%22%3A%2220%22%7D%7D%2C%22comm%22%3A%7B%22uin%22%3A%2218585073516%22%2C%22format%22%3A%22json%22%2C%22ct%22%3A24%2C%22cv%22%3A0%7D%7D)
说明:这个是根据歌曲songmid来获得音乐播放地址的,请求示例很长,在经过多次尝试后,很遗憾的并不能缩减,要想获取播放地址,只需要更改上面高亮字体的songmid后的001X0PDf0W4lBq即可,至于更改方法很多,比如直接用Java的字符串拼接。请求成功后请注意两个字段purl和sip(为数组),歌曲的播放地址就是sip数组里的其中一个加上pur,即sip[0]+purl(vip音乐或者版权音乐的purl为空)。
#### 1. 请求时的参数说明
| 参数 | 说明 |
| ------- | ------------------------------------------------------------ |
| songmid | 歌曲的songmid怎么得到,必须通过上面搜索歌曲后得到,然后更改上面示例的001X0PDf0W4lBq(泡沫的songmi
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 一款音乐播放器 APP (源码+项目说明)(数据爬取 QQ 音乐网页端,实现歌曲查询和播放,歌词显示及其歌曲下载等功能).zip 一款音乐播放器 APP (源码+项目说明)(数据爬取 QQ 音乐网页端,实现歌曲查询和播放,歌词显示及其歌曲下载等功能).zip 一款音乐播放器 APP (源码+项目说明)(数据爬取 QQ 音乐网页端,实现歌曲查询和播放,歌词显示及其歌曲下载等功能).zip 一款音乐播放器 APP (源码+项目说明)(数据爬取 QQ 音乐网页端,实现歌曲查询和播放,歌词显示及其歌曲下载等功能).zip 一款音乐播放器 APP (源码+项目说明)(数据爬取 QQ 音乐网页端,实现歌曲查询和播放,歌词显示及其歌曲下载等功能).zip
资源推荐
资源详情
资源评论
收起资源包目录
一款音乐播放器 APP (源码+项目说明)(数据爬取 QQ 音乐网页端,实现歌曲查询和播放,歌词显示及其歌曲下载等功能).zip (269个子文件)
gradlew.bat 2KB
gif2.gif 9.83MB
gif1.gif 6.49MB
.gitignore 1002B
.gitignore 7B
config.gradle 4KB
build.gradle 3KB
build.gradle 723B
settings.gradle 15B
gradlew 5KB
gradle-wrapper.jar 52KB
PlayActivity.java 27KB
PlayerService.java 26KB
AlbumSong.java 24KB
SearchSong.java 21KB
SongUrl.java 18KB
SongLrc.java 17KB
DownloadService.java 13KB
MainActivity.java 13KB
AlbumContentFragment.java 13KB
DiscView.java 11KB
SearchContentFragment.java 10KB
Album.java 9KB
MainFragment.java 9KB
AlbumSongFragment.java 9KB
SearchContentAdapter.java 7KB
LocalFragment.java 7KB
SearchContentPresenter.java 7KB
CommonUtil.java 7KB
DownloadingFragment.java 6KB
DbHelperImpl.java 6KB
DownloadTask.java 6KB
FastBlurUtil.java 6KB
PlayPresenter.java 6KB
DownloadMusicFragment.java 5KB
ExpandableListViewAdapter.java 5KB
CollectionFragment.java 5KB
SongAdapter.java 5KB
DownloadSongAdapter.java 5KB
HistoryFragment.java 5KB
LoveSongAdapter.java 5KB
HistoryAdapter.java 5KB
FileUtil.java 5KB
AlbumSongAdapter.java 5KB
DownloadingAdapter.java 4KB
BaseLoadingFragment.java 4KB
RetrofitFactory.java 4KB
SearchHistoryAdapter.java 4KB
SearchHistoryFragment.java 4KB
BackgroundAnimationRelativeLayout.java 3KB
BaseObserver.java 3KB
LrcUtil.java 3KB
DataModel.java 3KB
AlbumSongPresenter.java 3KB
Song.java 3KB
RetrofitService.java 3KB
SingerImg.java 3KB
DownloadUtil.java 3KB
Api.java 3KB
Constant.java 3KB
BaseLazyFragment.java 3KB
WelcomeActivity.java 2KB
DownloadFragment.java 2KB
DownloadInfo.java 2KB
ContentFragment.java 2KB
BaseFragment.java 2KB
HistorySong.java 2KB
Love.java 2KB
OnlineSong.java 2KB
NetworkHelperImpl.java 2KB
MD5Util.java 2KB
BasePresenter.java 2KB
IPlayContract.java 2KB
BaseActivity.java 2KB
DisplayUtil.java 2KB
ISearchContentContract.java 2KB
DownloadSong.java 2KB
LocalSong.java 1KB
AlbumCollection.java 1KB
MediaUtil.java 1KB
LocalPresenter.java 1KB
NetworkHelper.java 1KB
IAlbumSongContract.java 1KB
DownloadEvent.java 985B
TabAdapter.java 946B
DbHelper.java 929B
PreferencesHelperImpl.java 850B
LrcBean.java 835B
ServiceUtil.java 782B
ScreenUtil.java 771B
ExampleInstrumentedTest.java 747B
BaseMvpFragment.java 697B
BaseMvpActivity.java 672B
MyListView.java 639B
ILocalContract.java 630B
App.java 574B
IPresenter.java 504B
OnlineSongLrc.java 503B
DownloadListener.java 496B
SearchHistory.java 472B
共 269 条
- 1
- 2
- 3
资源评论
土豆片片
- 粉丝: 1529
- 资源: 5641
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功