package me.wcy.music.executor; import android.app.Activity; import android.text.TextUtils; import java.io.File; import me.wcy.music.http.HttpCallback; import me.wcy.music.http.HttpClient; import me.wcy.music.model.DownloadInfo; import me.wcy.music.model.OnlineMusic; import me.wcy.music.utils.FileUtils; /** * 下载音乐 * Created by wcy on 2016/1/3. */ public abstract class DownloadOnlineMusic extends DownloadMusic { private OnlineMusic mOnlineMusic; public DownloadOnlineMusic(Activity activity, OnlineMusic onlineMusic) { super(activity); mOnlineMusic = onlineMusic; } @Override protected void download() { final String artist = mOnlineMusic.getArtist_name(); final String title = mOnlineMusic.getTitle(); // 获取歌曲下载链接 HttpClient.getMusicDownloadInfo(mOnlineMusic.getSong_id(), new HttpCallback<DownloadInfo>() { @Override public void onSuccess(DownloadInfo response) { if (response == null || response.getBitrate() == null) { onFail(null); return; } downloadMusic(response.getBitrate().getFile_link(), artist, title); onExecuteSuccess(null); } @Override public void onFail(Exception e) { onExecuteFail(e); } }); // 下载歌词 String lrcFileName = FileUtils.getLrcFileName(artist, title); File lrcFile = new File(FileUtils.getLrcDir() + lrcFileName); if (!TextUtils.isEmpty(mOnlineMusic.getLrclink()) && !lrcFile.exists()) { downloadLrc(mOnlineMusic.getLrclink(), lrcFileName); } // 下载封面 String albumFileName = FileUtils.getAlbumFileName(artist, title); File albumFile = new File(FileUtils.getAlbumDir(), albumFileName); String picUrl = mOnlineMusic.getPic_big(); if (TextUtils.isEmpty(picUrl)) { picUrl = mOnlineMusic.getPic_small(); } if (!albumFile.exists() && !TextUtils.isEmpty(picUrl)) { downloadAlbum(picUrl, albumFileName); } } private void downloadLrc(String url, String fileName) { HttpClient.downloadFile(url, FileUtils.getLrcDir(), fileName, new HttpCallback<File>() { @Override public void onSuccess(File file) { } @Override public void onFail(Exception e) { } }); } private void downloadAlbum(String picUrl, String fileName) { HttpClient.downloadFile(picUrl, FileUtils.getAlbumDir(), fileName, new HttpCallback<File>() { @Override public void onSuccess(File file) { } @Override public void onFail(Exception e) { } }); } }