Android AIDL技术实战项目-音乐播放器(二)-使用retrofit完成音乐API的封装

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zuiaisha1/article/details/61202252

使用retrofit完成音乐API的封装

音乐API
http://blog.csdn.net/zuiaisha1/article/details/61200422

代码结构
这里写图片描述

1、导入retrofit相关库

    compile 'com.squareup.retrofit2:retrofit:2.2.0'

2、编写接口API

public interface MusicApi {

    String MUSIC_BASE_URL = "http://tingapi.ting.baidu.com/";
    String SUB_URL = "v1/restserver/ting";

    @GET(SUB_URL)
    Call<PaySongBean> getPaySongData(@QueryMap Map<String, String> params);

    @GET(SUB_URL)
    Call<SongLrcBean> getSongLrcData(@QueryMap Map<String, String> params);

    @GET(SUB_URL)
    Call<SongBillListBean> getSongBillListData(@QueryMap Map<String, String> params);

    @GET(SUB_URL)
    Call<SearchSongBean> getSearchSongData(@QueryMap Map<String, String> params);

    @GET(SUB_URL)
    Call<RecommandSongListBean> getRecommandSongList(@QueryMap Map<String, String> params);

    //未使用的
//    @GET(SUB_URL)
//    Call<SongLrcBean> downSong(@QueryMap Map<String, String> params);
//
//
//    @GET(SUB_URL)
//    Call<SongLrcBean> getSingerInfo(@QueryMap Map<String, String> params);

//    @GET(SUB_URL)
//    Call<SongLrcBean> getSingerSongList(@QueryMap Map<String, String> params);

}

3、二次封装

public class NetManager {

    private Retrofit mRetrofit;
    private MusicApi mMusicApi;
    private OkHttpClient mClient;

    /**
     * 播放音乐
     *
     * @param songid
     * @param callBack
     */
    public void getPaySongData(String songid, NetCallBack<PaySongBean> callBack) {
        Map<String, String> params = NetHelper.getMusicApiCommonParams("baidu.ting.song.play");
        params.put("songid", songid);
        createMusicApi()
                .getPaySongData(params)
                .enqueue(callBack);
    }
    /**
     * 播放音乐
     *
     * @param songid
     * @param callBack
     */
    public void getSongLrcData(String songid, NetCallBack<SongLrcBean> callBack) {
        Map<String, String> params = NetHelper.getMusicApiCommonParams("baidu.ting.song.lry");
        params.put("songid", songid);
        createMusicApi()
                .getSongLrcData(params)
                .enqueue(callBack);
    }



    /**
     * 推荐列表
     * @param songid
     * @param num
     * @param callBack
     */
    public void getRecommandSongList(String songid, String num, NetCallBack<RecommandSongListBean> callBack) {
        Map<String, String> params = NetHelper.getMusicApiCommonParams("baidu.ting.song.getRecommandSongList");
        params.put("songid", songid);
        params.put("num", num);
        createMusicApi()
                .getRecommandSongList(params)
                .enqueue(callBack);
    }

    /**
     * 搜索
     * @param query
     * @param callBack
     */
    public void getSearchSongData(String query, NetCallBack<SearchSongBean> callBack) {
        Map<String, String> params = NetHelper.getMusicApiCommonParams("baidu.ting.search.catalogSug");
        params.put("query", query);
        createMusicApi()
                .getSearchSongData(params)
                .enqueue(callBack);
    }

    /**
     * @param type 1-新歌榜,2-热歌榜,11-摇滚榜,12-爵士,16-流行,21-欧美金曲榜,22-经典老歌榜,23-情歌对唱榜,24-影视金曲榜,25-网络歌曲榜
     * @param size  返回条目数量
     * @param offset 获取偏移
     * @param callBack
     */
    public void getSongBillListData(int type, int size, int offset, NetCallBack<SongBillListBean> callBack) {
        Map<String, String> params = NetHelper.getMusicApiCommonParams("baidu.ting.billboard.billList");
        params.put("type", String.valueOf(type));
        params.put("size", String.valueOf(size));
        params.put("offset", String.valueOf(offset));
        createMusicApi()
                .getSongBillListData(params)
                .enqueue(callBack);
    }


    private static NetManager instance;
    private NetManager() {}
    public static NetManager getInstance() {
        if (instance == null) {
            synchronized (NetManager.class) {
                if (instance == null) {
                    instance = new NetManager();
                }
            }
        }
        return instance;
    }
    MusicApi createMusicApi() {

        if (mClient == null) {
            OkHttpClient.Builder   builder = new OkHttpClient().newBuilder();
            if(BuildConfig.DEBUG){
                builder.addNetworkInterceptor(new AGLogInterceptor());
            }
            mClient = builder.build();
        }


        if (mRetrofit == null) {
            mRetrofit = new Retrofit.Builder()
                    .baseUrl(MusicApi.MUSIC_BASE_URL)
                    .addConverterFactory(GsonConverterFactory.create())
                    .client(mClient)
                    .build();
        }

        if (mMusicApi == null) {
            mMusicApi = mRetrofit.create(MusicApi.class);
        }
        return mMusicApi;


    }
}

猜你喜欢

转载自blog.csdn.net/zuiaisha1/article/details/61202252