Fiddler爬取Api之专辑歌曲模块

pull/1/head
jsyjst 6 years ago
parent 56b4c28c49
commit d78d869dc1

@ -22,13 +22,13 @@ import java.util.List;
public class AlbumSongAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private List<AlbumSong.DataBean.GetSongInfoBean> mSongsBeanList;
private List<AlbumSong.DataBean.ListBean> mSongsBeanList;
private int mLastPosition = -1;
private OnItemClickListener mSongClick;
private final int songType = 1;
private final int footerType = 2;
public AlbumSongAdapter(List<AlbumSong.DataBean.GetSongInfoBean> songsBeans) {
public AlbumSongAdapter(List<AlbumSong.DataBean.ListBean> songsBeans) {
mSongsBeanList = songsBeans;
}
@ -56,7 +56,7 @@ public class AlbumSongAdapter extends RecyclerView.Adapter<RecyclerView.ViewHold
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, final int position) {
if (viewHolder instanceof ViewHolder) {
ViewHolder holder = (ViewHolder) viewHolder;
AlbumSong.DataBean.GetSongInfoBean songsBean = mSongsBeanList.get(position);
AlbumSong.DataBean.ListBean songsBean = mSongsBeanList.get(position);
//设置歌手,因为歌手可能有两个
StringBuilder singer = new StringBuilder(songsBean.getSinger().get(0).getName());
for (int i = 1; i < songsBean.getSinger().size(); i++) {
@ -66,7 +66,7 @@ public class AlbumSongAdapter extends RecyclerView.Adapter<RecyclerView.ViewHold
holder.titleTv.setText(songsBean.getSongname());
holder.mItemView.setBackgroundResource(R.color.translucent);
//根据点击显示
if(songsBean.getSongmid().equals(FileHelper.getSong().getSongId())){
if(songsBean.getSongmid().equals(FileHelper.getSong().getSongId())){
holder.playLine.setVisibility(View.VISIBLE);
holder.titleTv.setTextColor(App.getContext().getResources().getColor(R.color.yellow));
holder.artistTv.setTextColor(App.getContext().getResources().getColor(R.color.yellow));

@ -32,7 +32,7 @@ public class SearchContentAdapter extends RecyclerView.Adapter<RecyclerView.View
private static final String TAG = "SearchContentAdapter";
private ArrayList<SearchSong.DataBean.SongBean.ListBean> mSongListBeans;
private List<Album.DataBean.ListBean> mAlbumList;
private List<Album.DataBean.AlbumBean.ListBean> mAlbumList;
private static OnItemClickListener mItemClick;
private static OnAlbumItemClickListener mAlbumClick;
private String mSeek;
@ -49,7 +49,7 @@ public class SearchContentAdapter extends RecyclerView.Adapter<RecyclerView.View
mAlbumClick = albumClick;
}
public SearchContentAdapter(List<Album.DataBean.ListBean> dataBeans, String seek, Context context, int type) {
public SearchContentAdapter(List<Album.DataBean.AlbumBean.ListBean> dataBeans, String seek, Context context, int type) {
mContext = context;
mSeek = seek;
mAlbumList = dataBeans;
@ -112,7 +112,7 @@ public class SearchContentAdapter extends RecyclerView.Adapter<RecyclerView.View
});
} else {
AlbumHolder albumHolder = (AlbumHolder) holder;
Album.DataBean.ListBean albumList = mAlbumList.get(position);
Album.DataBean.AlbumBean.ListBean albumList = mAlbumList.get(position);
Glide.with(mContext).load(albumList.getAlbumPic())
.apply(RequestOptions.errorOf(R.drawable.background)).into(albumHolder.albumIv);
albumHolder.albumName.setText(albumList.getAlbumName());

@ -24,7 +24,8 @@ public class Api {
public static final String FIDDLER_BASE_QQ_URL ="https://c.y.qq.com/";
public static final String FIDDLER_BASE_SONG_URL="https://u.y.qq.com/"; //获取播放地址的baseUrl
//搜索功能
public static final String SEARCH="soso/fcgi-bin/client_search_cp?n=30&format=json";
public static final String SEARCH_SONG ="soso/fcgi-bin/client_search_cp?n=30&format=json"; //歌曲n为一页30首
public static final String SEARCH_ALBUM="soso/fcgi-bin/client_search_cp?n=20&format=json&t=8";//专辑n为一页20张
//得到歌曲的播放地址
public static final String SONG_URL="cgi-bin/musicu.fcg?format=json";
public static final String SONG_URL_DATA_LEFT="%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%22";
@ -32,5 +33,7 @@ public class Api {
//专辑照片
public static final String ALBUM_PIC="http://y.gtimg.cn/music/photo_new/T002R180x180M000";
public static final String JPG=".jpg";
//专辑详细
public static final String ALBUM_DETAIL="v8/fcg-bin/fcg_v8_album_info_cp.fcg?format=json";
}

@ -14,7 +14,7 @@ import java.util.List;
public interface IAlbumSongContract {
interface View extends BaseView {
void setAlbumSongList(List<AlbumSong.DataBean.GetSongInfoBean> songList); //成功获取专辑歌曲后填充列表
void setAlbumSongList(List<AlbumSong.DataBean.ListBean> dataBean); //成功获取专辑歌曲后填充列表
void showAlbumSongError();//获取专辑失败
void showAlbumMessage(String name,String language,String company,String albumType,String desc); //展示专辑详细
void showLoading(); //显示进度
@ -23,7 +23,7 @@ public interface IAlbumSongContract {
}
interface Presenter extends IPresenter<View> {
void getAlbumDetail(String id,int type); //获取专辑的更多信息
void insertAllAlbumSong(List<AlbumSong.DataBean.GetSongInfoBean> songList); //将专辑歌曲添加到数据库
void insertAllAlbumSong(List<AlbumSong.DataBean.ListBean> dataBean); //将专辑歌曲添加到数据库
}
}

@ -20,8 +20,8 @@ public interface ISearchContentContract {
void searchMore();//搜索更多
void showSearcherMoreNetworkError();//下拉刷新网络错误
void searchAlbumSuccess(List<Album.DataBean.ListBean> albumList); //获取专辑成功
void searchAlbumMoreSuccess(List<Album.DataBean.ListBean> songListBeans); //搜索更多内容成功
void searchAlbumSuccess(List<Album.DataBean.AlbumBean.ListBean> albumList); //获取专辑成功
void searchAlbumMoreSuccess(List<Album.DataBean.AlbumBean.ListBean> songListBeans); //搜索更多内容成功
void searchAlbumError(); //获取专辑失败
void getSongUrlSuccess(String url);//成功获取歌曲url
}

@ -18,9 +18,9 @@ public class Album {
private int code;
private String msg;
private long timestamp;
private DataBean data;
public int getCode() {
return code;
}
@ -37,14 +37,6 @@ public class Album {
this.msg = msg;
}
public long getTimestamp() {
return timestamp;
}
public void setTimestamp(long timestamp) {
this.timestamp = timestamp;
}
public DataBean getData() {
return data;
}
@ -54,250 +46,258 @@ public class Album {
}
public static class DataBean {
/**
* curnum : 1
* curpage : 1
* totalnum : 113
* list : [{"albumName":"周杰伦的床边故事","singerMID":"0025NhlN2yWrP4","singerName_hilight":"<em>周杰伦<\/em>","docid":"3609733955036397641","singer_list":[{"name":"周杰伦","name_hilight":"<em>周杰伦<\/em>","mid":"0025NhlN2yWrP4","id":4558}],"albumMID":"003RMaRI1iFoYd","albumID":1458791,"albumPic":"http://y.gtimg.cn/music/photo_new/T002R180x180M000003RMaRI1iFoYd.jpg","type":0,"singerName":"周杰伦","albumName_hilight":"<em>周杰伦<\/em>的床边故事","publicTime":"2016-06-24","singerID":4558,"song_count":10,"catch_song":""}]
*/
private int curnum;
private int curpage;
private int totalnum;
private List<ListBean> list;
public int getCurnum() {
return curnum;
}
public void setCurnum(int curnum) {
this.curnum = curnum;
}
public int getCurpage() {
return curpage;
}
public void setCurpage(int curpage) {
this.curpage = curpage;
}
public int getTotalnum() {
return totalnum;
}
public void setTotalnum(int totalnum) {
this.totalnum = totalnum;
}
public List<ListBean> getList() {
return list;
}
private AlbumBean album;
public void setList(List<ListBean> list) {
this.list = list;
public AlbumBean getAlbum() {
return album;
}
public static class ListBean {
public static class AlbumBean {
/**
* albumName :
* singerMID : 0025NhlN2yWrP4
* singerName_hilight : <em></em>
* docid : 3609733955036397641
* singer_list : [{"name":"周杰伦","name_hilight":"<em>周杰伦<\/em>","mid":"0025NhlN2yWrP4","id":4558}]
* albumMID : 003RMaRI1iFoYd
* albumID : 1458791
* albumPic : http://y.gtimg.cn/music/photo_new/T002R180x180M000003RMaRI1iFoYd.jpg
* type : 0
* singerName :
* albumName_hilight : <em></em>
* publicTime : 2016-06-24
* singerID : 4558
* song_count : 10
* catch_song :
* curnum : 1
* curpage : 1
* totalnum : 113
* list : [{"albumName":"周杰伦的床边故事","singerMID":"0025NhlN2yWrP4","singerName_hilight":"<em>周杰伦<\/em>","docid":"3609733955036397641","singer_list":[{"name":"周杰伦","name_hilight":"<em>周杰伦<\/em>","mid":"0025NhlN2yWrP4","id":4558}],"albumMID":"003RMaRI1iFoYd","albumID":1458791,"albumPic":"http://y.gtimg.cn/music/photo_new/T002R180x180M000003RMaRI1iFoYd.jpg","type":0,"singerName":"周杰伦","albumName_hilight":"<em>周杰伦<\/em>的床边故事","publicTime":"2016-06-24","singerID":4558,"song_count":10,"catch_song":""}]
*/
private int curnum;
private int curpage;
private int totalnum;
private List<ListBean> list;
private String albumName;
private String singerMID;
private String singerName_hilight;
private String docid;
private String albumMID;
private int albumID;
private String albumPic;
private int type;
private String singerName;
private String albumName_hilight;
private String publicTime;
private int singerID;
private int song_count;
private String catch_song;
private List<SingerListBean> singer_list;
public String getAlbumName() {
return albumName;
public int getCurnum() {
return curnum;
}
public void setAlbumName(String albumName) {
this.albumName = albumName;
public void setCurnum(int curnum) {
this.curnum = curnum;
}
public String getSingerMID() {
return singerMID;
public int getCurpage() {
return curpage;
}
public void setSingerMID(String singerMID) {
this.singerMID = singerMID;
public void setCurpage(int curpage) {
this.curpage = curpage;
}
public String getSingerName_hilight() {
return singerName_hilight;
public int getTotalnum() {
return totalnum;
}
public void setSingerName_hilight(String singerName_hilight) {
this.singerName_hilight = singerName_hilight;
public void setTotalnum(int totalnum) {
this.totalnum = totalnum;
}
public String getDocid() {
return docid;
public List<ListBean> getList() {
return list;
}
public void setDocid(String docid) {
this.docid = docid;
public void setList(List<ListBean> list) {
this.list = list;
}
public String getAlbumMID() {
return albumMID;
}
public static class ListBean {
/**
* albumName :
* singerMID : 0025NhlN2yWrP4
* singerName_hilight : <em></em>
* docid : 3609733955036397641
* singer_list : [{"name":"周杰伦","name_hilight":"<em>周杰伦<\/em>","mid":"0025NhlN2yWrP4","id":4558}]
* albumMID : 003RMaRI1iFoYd
* albumID : 1458791
* albumPic : http://y.gtimg.cn/music/photo_new/T002R180x180M000003RMaRI1iFoYd.jpg
* type : 0
* singerName :
* albumName_hilight : <em></em>
* publicTime : 2016-06-24
* singerID : 4558
* song_count : 10
* catch_song :
*/
public void setAlbumMID(String albumMID) {
this.albumMID = albumMID;
}
private String albumName;
private String singerMID;
private String singerName_hilight;
private String docid;
private String albumMID;
private int albumID;
private String albumPic;
private int type;
private String singerName;
private String albumName_hilight;
private String publicTime;
private int singerID;
private int song_count;
private String catch_song;
private List<SingerListBean> singer_list;
public String getAlbumName() {
return albumName;
}
public int getAlbumID() {
return albumID;
}
public void setAlbumName(String albumName) {
this.albumName = albumName;
}
public void setAlbumID(int albumID) {
this.albumID = albumID;
}
public String getSingerMID() {
return singerMID;
}
public String getAlbumPic() {
return albumPic;
}
public void setSingerMID(String singerMID) {
this.singerMID = singerMID;
}
public void setAlbumPic(String albumPic) {
this.albumPic = albumPic;
}
public String getSingerName_hilight() {
return singerName_hilight;
}
public int getType() {
return type;
}
public void setSingerName_hilight(String singerName_hilight) {
this.singerName_hilight = singerName_hilight;
}
public void setType(int type) {
this.type = type;
}
public String getDocid() {
return docid;
}
public String getSingerName() {
return singerName;
}
public void setDocid(String docid) {
this.docid = docid;
}
public void setSingerName(String singerName) {
this.singerName = singerName;
}
public String getAlbumMID() {
return albumMID;
}
public String getAlbumName_hilight() {
return albumName_hilight;
}
public void setAlbumMID(String albumMID) {
this.albumMID = albumMID;
}
public void setAlbumName_hilight(String albumName_hilight) {
this.albumName_hilight = albumName_hilight;
}
public int getAlbumID() {
return albumID;
}
public String getPublicTime() {
return publicTime;
}
public void setAlbumID(int albumID) {
this.albumID = albumID;
}
public void setPublicTime(String publicTime) {
this.publicTime = publicTime;
}
public String getAlbumPic() {
return albumPic;
}
public int getSingerID() {
return singerID;
}
public void setAlbumPic(String albumPic) {
this.albumPic = albumPic;
}
public void setSingerID(int singerID) {
this.singerID = singerID;
}
public int getType() {
return type;
}
public int getSong_count() {
return song_count;
}
public void setType(int type) {
this.type = type;
}
public void setSong_count(int song_count) {
this.song_count = song_count;
}
public String getSingerName() {
return singerName;
}
public String getCatch_song() {
return catch_song;
}
public void setSingerName(String singerName) {
this.singerName = singerName;
}
public void setCatch_song(String catch_song) {
this.catch_song = catch_song;
}
public String getAlbumName_hilight() {
return albumName_hilight;
}
public List<SingerListBean> getSinger_list() {
return singer_list;
}
public void setAlbumName_hilight(String albumName_hilight) {
this.albumName_hilight = albumName_hilight;
}
public void setSinger_list(List<SingerListBean> singer_list) {
this.singer_list = singer_list;
}
public String getPublicTime() {
return publicTime;
}
public static class SingerListBean {
/**
* name :
* name_hilight : <em></em>
* mid : 0025NhlN2yWrP4
* id : 4558
*/
public void setPublicTime(String publicTime) {
this.publicTime = publicTime;
}
private String name;
private String name_hilight;
private String mid;
private int id;
public int getSingerID() {
return singerID;
}
public String getName() {
return name;
public void setSingerID(int singerID) {
this.singerID = singerID;
}
public void setName(String name) {
this.name = name;
public int getSong_count() {
return song_count;
}
public String getName_hilight() {
return name_hilight;
public void setSong_count(int song_count) {
this.song_count = song_count;
}
public void setName_hilight(String name_hilight) {
this.name_hilight = name_hilight;
public String getCatch_song() {
return catch_song;
}
public String getMid() {
return mid;
public void setCatch_song(String catch_song) {
this.catch_song = catch_song;
}
public void setMid(String mid) {
this.mid = mid;
public List<SingerListBean> getSinger_list() {
return singer_list;
}
public int getId() {
return id;
public void setSinger_list(List<SingerListBean> singer_list) {
this.singer_list = singer_list;
}
public void setId(int id) {
this.id = id;
public static class SingerListBean {
/**
* name :
* name_hilight : <em></em>
* mid : 0025NhlN2yWrP4
* id : 4558
*/
private String name;
private String name_hilight;
private String mid;
private int id;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getName_hilight() {
return name_hilight;
}
public void setName_hilight(String name_hilight) {
this.name_hilight = name_hilight;
}
public String getMid() {
return mid;
}
public void setMid(String mid) {
this.mid = mid;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
}
}
}
}

File diff suppressed because one or more lines are too long

@ -69,7 +69,7 @@ public class DataModel implements NetworkHelper, DbHelper {
}
@Override
public void insertAllAlbumSong(List<AlbumSong.DataBean.GetSongInfoBean> songList) {
public void insertAllAlbumSong(List<AlbumSong.DataBean.ListBean> songList) {
mDbHelper.insertAllAlbumSong(songList);
}

@ -20,7 +20,7 @@ public interface DbHelper {
*
* @param songList
*/
void insertAllAlbumSong(List<AlbumSong.DataBean.GetSongInfoBean> songList);
void insertAllAlbumSong(List<AlbumSong.DataBean.ListBean> songList);
List<LocalSong> getLocalMp3Info(); //得到本地列表
boolean saveSong(List<LocalSong> localSongs);//将本地音乐放到数据库中

@ -27,19 +27,19 @@ import java.util.List;
public class DbHelperImpl implements DbHelper {
@Override
public void insertAllAlbumSong(List<AlbumSong.DataBean.GetSongInfoBean> songList) {
public void insertAllAlbumSong(List<AlbumSong.DataBean.ListBean> songList) {
LitePal.deleteAll(OnlineSong.class);
for (int i = 0; i < songList.size(); i++) {
AlbumSong.DataBean.GetSongInfoBean song = songList.get(i);
AlbumSong.DataBean.ListBean song = songList.get(i);
OnlineSong onlineSong = new OnlineSong();
onlineSong.setId(i + 1);
onlineSong.setUrl(Api.PLAY_URL + song.getSongmid());
onlineSong.setName(song.getSongname());
onlineSong.setPic(Api.PIC_URL + song.getSongmid());
onlineSong.setSinger(song.getSinger().get(0).getName());
onlineSong.setLrc(Api.LRC_URL + song.getSongmid());
onlineSong.setSongId(song.getSongmid());
onlineSong.setDuration(song.getInterval());
onlineSong.setPic(Api.ALBUM_PIC + song.getAlbummid()+Api.JPG);
onlineSong.setUrl(null);
onlineSong.setLrc(null);
onlineSong.save();
}
}

@ -23,28 +23,37 @@ import retrofit2.http.Query;
*/
public interface RetrofitService {
@GET("album?")
Observable<AlbumSong> getAlbumSong(@Query("id")String id);
/**
*
* https://c.y.qq.com/soso/fcgi-bin/client_search_cp?p=2&n=2&w=周杰伦&format=json
*/
@GET(Api.SEARCH)
@GET(Api.SEARCH_SONG)
Observable<SearchSong> search(@Query("w") String seek, @Query("p")int offset);
@GET("search?type=album")
/**
* https://c.y.qq.com/soso/fcgi-bin/client_search_cp?p=1&n=2&w=林宥嘉&format=json&t=8
* @param seek
* @param offset
*/
@GET(Api.SEARCH_ALBUM)
Observable<Album> searchAlbum(@Query("w") String seek, @Query("p")int offset);
/**
* https://c.y.qq.com/v8/fcg-bin/fcg_v8_album_info_cp.fcg?albummid=004YodY33zsWTT&format=json
* @param id mid
*/
@GET(Api.ALBUM_DETAIL)
Observable<AlbumSong> getAlbumSong(@Query("albummid")String id);
/**
*
* @param seek
* @return
*/
@GET(Api.SEARCH)
@GET(Api.SEARCH_SONG)
Observable<SearchSong> search(@Query("w") String seek);
/**
*
*
* @param id id
* @return
*/

@ -41,16 +41,16 @@ public class AlbumSongPresenter extends BasePresenter<IAlbumSongContract.View> i
public void onNext(AlbumSong albumSong) {
super.onNext(albumSong);
mView.hideLoading();
if (albumSong.getCode() == 200) {
if (albumSong.getCode() == 0) {
if (type == ALBUM_SONG) {
insertAllAlbumSong(albumSong.getData().getGetSongInfo());
insertAllAlbumSong(albumSong.getData().getList());
} else {
mView.showAlbumMessage(
albumSong.getData().getGetSongInfo().get(0).getAlbumname(),
albumSong.getData().getLanguage(),
albumSong.getData().getGetCompanyInfo().getFcompany_name(),
albumSong.getData().getAlbumtype(),
albumSong.getData().getGetAlbumDesc().getFalbum_desc());
albumSong.getData().getName(),
albumSong.getData().getLan(),
albumSong.getData().getCompany(),
albumSong.getData().getGenre(),
albumSong.getData().getDesc());
}
} else {
mView.showAlbumSongError();
@ -73,7 +73,7 @@ public class AlbumSongPresenter extends BasePresenter<IAlbumSongContract.View> i
}
@Override
public void insertAllAlbumSong(List<AlbumSong.DataBean.GetSongInfoBean> songList) {
public void insertAllAlbumSong(List<AlbumSong.DataBean.ListBean> songList) {
mModel.insertAllAlbumSong(songList);
mView.setAlbumSongList(songList);
}

@ -83,7 +83,7 @@ public class SearchContentPresenter extends BasePresenter<ISearchContentContract
public void onNext(Album album) {
super.onNext(album);
if (album.getCode() == 0) {
mView.searchAlbumSuccess(album.getData().getList());
mView.searchAlbumSuccess(album.getData().getAlbum().getList());
} else {
mView.searchAlbumError();
}
@ -100,8 +100,8 @@ public class SearchContentPresenter extends BasePresenter<ISearchContentContract
@Override
public void onNext(Album album) {
super.onNext(album);
if (album.getCode() == 200) {
mView.searchAlbumMoreSuccess(album.getData().getList());
if (album.getCode() == 0) {
mView.searchAlbumMoreSuccess(album.getData().getAlbum().getList());
} else {
mView.searchMoreError();
}

@ -8,12 +8,16 @@ import android.os.Binder;
import android.os.IBinder;
import android.util.Log;
import com.example.musicplayer.app.Api;
import com.example.musicplayer.app.Constant;
import com.example.musicplayer.base.observer.BaseObserver;
import com.example.musicplayer.entiy.HistorySong;
import com.example.musicplayer.entiy.LocalSong;
import com.example.musicplayer.entiy.Love;
import com.example.musicplayer.entiy.OnlineSong;
import com.example.musicplayer.entiy.SingerImg;
import com.example.musicplayer.entiy.Song;
import com.example.musicplayer.entiy.SongUrl;
import com.example.musicplayer.event.OnlineSongChangeEvent;
import com.example.musicplayer.event.OnlineSongErrorEvent;
import com.example.musicplayer.event.SongAlbumEvent;
@ -21,6 +25,7 @@ import com.example.musicplayer.event.SongCollectionEvent;
import com.example.musicplayer.event.SongHistoryEvent;
import com.example.musicplayer.event.SongLocalEvent;
import com.example.musicplayer.event.SongStatusEvent;
import com.example.musicplayer.model.https.RetrofitFactory;
import com.example.musicplayer.util.FileHelper;
import org.greenrobot.eventbus.EventBus;
@ -28,9 +33,15 @@ import org.litepal.LitePal;
import org.litepal.crud.callback.FindMultiCallback;
import org.litepal.crud.callback.SaveCallback;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
@SuppressLint("NewApi")
public class PlayerService extends Service {
@ -151,19 +162,14 @@ public class PlayerService extends Service {
mediaPlayer.reset();//把各项参数恢复到初始状态
if (mListType == Constant.LIST_TYPE_LOCAL) {
mediaPlayer.setDataSource(mLocalSongList.get(mCurrent).getUrl());
startPlay();
} else if (mListType == Constant.LIST_TYPE_ONLINE) {
mediaPlayer.setDataSource(mSongList.get(mCurrent).getUrl());
getSongUrl(mSongList.get(mCurrent).getSongId());
} else if (mListType == Constant.LIST_TYPE_LOVE) {
mediaPlayer.setDataSource(mLoveList.get(mCurrent).getUrl());
} else {
mediaPlayer.setDataSource(mHistoryList.get(mCurrent).getUrl());
}
mediaPlayer.prepare(); //进行缓冲
isPlaying = true;
mediaPlayer.start();
saveToHistoryTable();
EventBus.getDefault().post(new SongStatusEvent(Constant.SONG_CHANGE));//发送所有歌曲改变事件
EventBus.getDefault().post(new OnlineSongChangeEvent()); //发送网络歌曲改变事件
} catch (Exception e) {
e.printStackTrace();
}
@ -175,7 +181,6 @@ public class PlayerService extends Service {
mediaPlayer.reset();
mediaPlayer.setDataSource(FileHelper.getSong().getUrl());
mediaPlayer.prepare();
isPlaying = true;
saveToHistoryTable();
mediaPlayer.start();
@ -440,6 +445,57 @@ public class PlayerService extends Service {
}
return historySongList;
}
//网络请求获取播放地址
private void getSongUrl(String songId){
RetrofitFactory.createRequestOfSongUrl().getSongUrl(Api.SONG_URL_DATA_LEFT+songId+Api.SONG_URL_DATA_RIGHT)
.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
.subscribeWith(new Observer<SongUrl>() {
@Override
public void onSubscribe(Disposable disposable) {
}
@Override
public void onNext(SongUrl songUrl) {
if(songUrl.getCode() == 0){
String sip = songUrl.getReq_0().getData().getSip().get(0);
String purl = songUrl.getReq_0().getData().getMidurlinfo().get(0).getPurl();
Song song = FileHelper.getSong();
assert song != null;
song.setUrl(sip+purl);
FileHelper.saveSong(song);
try {
mediaPlayer.setDataSource(sip+purl);
startPlay();
} catch (IOException e) {
e.printStackTrace();
}
}else {
Log.d(TAG, "onNext:"+ songUrl.getCode()+":获取不到歌曲播放地址");
}
}
@Override
public void onError(Throwable throwable) {
}
@Override
public void onComplete() {
}
});
}
private void startPlay() throws IOException {
mediaPlayer.prepare(); //进行缓冲
isPlaying = true;
mediaPlayer.start();
saveToHistoryTable();
EventBus.getDefault().post(new SongStatusEvent(Constant.SONG_CHANGE));//发送所有歌曲改变事件
EventBus.getDefault().post(new OnlineSongChangeEvent()); //发送网络歌曲改变事件
}
}

@ -10,6 +10,7 @@ import android.support.v4.app.Fragment;
import android.support.v4.widget.NestedScrollView;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@ -19,6 +20,7 @@ import android.widget.TextView;
import com.example.musicplayer.R;
import com.example.musicplayer.adapter.AlbumSongAdapter;
import com.example.musicplayer.app.Api;
import com.example.musicplayer.app.App;
import com.example.musicplayer.app.Constant;
import com.example.musicplayer.base.fragment.BaseMvpFragment;
import com.example.musicplayer.contract.IAlbumSongContract;
@ -69,7 +71,7 @@ public class AlbumSongFragment extends BaseMvpFragment<AlbumSongPresenter> imple
private List<AlbumSong.DataBean.GetSongInfoBean> mSongsList;
private List<AlbumSong.DataBean.ListBean> mSongsList;
private RecyclerView mRecycle;
private LinearLayoutManager mLinearManager;
private AlbumSongAdapter mAdapter;
@ -177,7 +179,7 @@ public class AlbumSongFragment extends BaseMvpFragment<AlbumSongPresenter> imple
}
@Override
public void setAlbumSongList(final List<AlbumSong.DataBean.GetSongInfoBean> songList) {
public void setAlbumSongList(final List<AlbumSong.DataBean.ListBean> songList) {
mLinearManager =new LinearLayoutManager(getActivity());
mRecycle.setLayoutManager(mLinearManager);
mAdapter =new AlbumSongAdapter(songList);
@ -185,17 +187,17 @@ public class AlbumSongFragment extends BaseMvpFragment<AlbumSongPresenter> imple
mRecycle.setAdapter(mAdapter);
mAdapter.setSongClick(position -> {
AlbumSong.DataBean.GetSongInfoBean dataBean= songList.get(position);
AlbumSong.DataBean.ListBean dataBean= songList.get(position);
Song song = new Song();
song.setSongId(dataBean.getSongmid());
song.setSinger(getSinger(dataBean));
song.setSongName(dataBean.getSongname());
song.setUrl(Api.PLAY_URL+dataBean.getSongmid());
song.setImgUrl(Api.PIC_URL+dataBean.getSongmid());
song.setCurrent(position);
song.setDuration(dataBean.getInterval());
song.setOnline(true);
song.setListType(Constant.LIST_TYPE_ONLINE);
song.setImgUrl(Api.ALBUM_PIC+dataBean.getAlbummid()+ Api.JPG);
song.setUrl(null);
FileHelper.saveSong(song);
mPlayStatusBinder.play(Constant.LIST_TYPE_ONLINE);
@ -248,7 +250,7 @@ public class AlbumSongFragment extends BaseMvpFragment<AlbumSongPresenter> imple
}
//获取歌手,因为歌手可能有很多个
private String getSinger(AlbumSong.DataBean.GetSongInfoBean dataBean){
private String getSinger(AlbumSong.DataBean.ListBean dataBean){
StringBuilder singer = new StringBuilder(dataBean.getSinger().get(0).getName());
for (int i = 1; i < dataBean.getSinger().size(); i++) {
singer.append("、").append(dataBean.getSinger().get(i).getName());

@ -58,7 +58,7 @@ public class SearchContentFragment extends BaseLoadingFragment<SearchContentPres
private LinearLayoutManager manager;
private SearchContentAdapter mAdapter;
private ArrayList<SearchSong.DataBean.SongBean.ListBean> mSongList = new ArrayList<>();
private List<Album.DataBean.ListBean> mAlbumList;
private List<Album.DataBean.AlbumBean.ListBean> mAlbumList;
private LRecyclerViewAdapter mLRecyclerViewAdapter;//下拉刷新
@BindView(R.id.normalView)
@ -215,7 +215,7 @@ public class SearchContentFragment extends BaseLoadingFragment<SearchContentPres
}
@Override
public void searchAlbumSuccess(final List<Album.DataBean.ListBean> albumList) {
public void searchAlbumSuccess(final List<Album.DataBean.AlbumBean.ListBean> albumList) {
mAlbumList = new ArrayList<>();
mAlbumList.addAll(albumList);
mAdapter = new SearchContentAdapter(mAlbumList, mSeek, getActivity(), Constant.TYPE_ALBUM);
@ -226,7 +226,7 @@ public class SearchContentFragment extends BaseLoadingFragment<SearchContentPres
}
@Override
public void searchAlbumMoreSuccess(List<Album.DataBean.ListBean> songListBeans) {
public void searchAlbumMoreSuccess(List<Album.DataBean.AlbumBean.ListBean> songListBeans) {
mAlbumList.addAll(songListBeans);
mAdapter.notifyDataSetChanged();
mRecycler.refreshComplete(Constant.OFFSET);
@ -261,7 +261,7 @@ public class SearchContentFragment extends BaseLoadingFragment<SearchContentPres
return fragment;
}
public void toAlbumContentFragment(Album.DataBean.ListBean album) {
public void toAlbumContentFragment(Album.DataBean.AlbumBean.ListBean album) {
FragmentManager manager = getActivity().getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.setCustomAnimations(R.anim.fragment_in, R.anim.fragment_out, R.anim.slide_in_right, R.anim.slide_out_right);

Loading…
Cancel
Save