package me.wcy.music.executor; import android.app.Activity; import android.app.Dialog; import android.app.DownloadManager; import android.content.Context; import android.content.DialogInterface; import android.net.Uri; import android.support.v7.app.AlertDialog; import android.webkit.MimeTypeMap; import me.wcy.music.R; import me.wcy.music.application.AppCache; import me.wcy.music.utils.FileUtils; import me.wcy.music.utils.NetworkUtils; import me.wcy.music.utils.Preferences; import me.wcy.music.utils.ToastUtils; /** * Created by hzwangchenyan on 2017/1/20. */ public abstract class DownloadMusic implements IExecutor<Void> { private Activity mActivity; public DownloadMusic(Activity activity) { mActivity = activity; } @Override public void execute() { checkNetwork(); } private void checkNetwork() { boolean mobileNetworkDownload = Preferences.enableMobileNetworkDownload(); if (NetworkUtils.isActiveNetworkMobile(mActivity) && !mobileNetworkDownload) { AlertDialog.Builder builder = new AlertDialog.Builder(mActivity); builder.setTitle(R.string.tips); builder.setMessage(R.string.download_tips); builder.setPositiveButton(R.string.download_tips_sure, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { downloadWrapper(); } }); builder.setNegativeButton(R.string.cancel, null); Dialog dialog = builder.create(); dialog.setCanceledOnTouchOutside(false); dialog.show(); } else { downloadWrapper(); } } private void downloadWrapper() { onPrepare(); download(); } protected abstract void download(); protected static void downloadMusic(String url, String artist, String song) { try { String fileName = FileUtils.getMp3FileName(artist, song); Uri uri = Uri.parse(url); DownloadManager.Request request = new DownloadManager.Request(uri); request.setTitle(FileUtils.getFileName(artist, song)); request.setDescription("正在下载…"); request.setDestinationInExternalPublicDir(FileUtils.getRelativeMusicDir(), fileName); request.setMimeType(MimeTypeMap.getFileExtensionFromUrl(url)); request.allowScanningByMediaScanner(); request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_MOBILE | DownloadManager.Request.NETWORK_WIFI); request.setAllowedOverRoaming(false);// 不允许漫游 DownloadManager downloadManager = (DownloadManager) AppCache.getContext().getSystemService(Context.DOWNLOAD_SERVICE); long id = downloadManager.enqueue(request); AppCache.getDownloadList().put(id, song); } catch (Throwable th) { th.printStackTrace(); ToastUtils.show("下载失败"); } } }