Android开发本地及网络Mp3音乐播放器(十九)通知媒体库更新刚下载的MP3
Posted iwanghang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android开发本地及网络Mp3音乐播放器(十九)通知媒体库更新刚下载的MP3相关的知识,希望对你有一定的参考价值。
转载请注明出处: http://blog.csdn.net/iwanghang/article/details/51427158觉得博文有用,请点赞,请留言,请关注,谢谢!~
实现功能:
通知媒体库更新
媒体库更新了,重新打开APP,就可以看到新的歌曲,但这样还是不完善。
后续将博文,将实现 下载音乐成功后,通更新媒体库后,更新本地音乐列表。
因为,没有自己的服务器,所以网络音乐所有相关功能(包含搜索音乐、下载音乐、下载歌词)均无法保证时效性,建议,尽快下载和练习;如果你下载时候,已经因为我采集的服务器更改规则,请给我留言,如果可以解决,我将在有空的时候献上新的源码。
截止到目前的源码下载:
http://download.csdn.net/album/detail/3105
(最新的,请下载最后一个,本博文对应版本2.3;如果需要逐步实现的过程,请下载所有)
欢迎移动开发爱好者交流:我的微信是iwanghang
另外,我打算开始找工作,如果沈阳或周边城市公司有意,也请与我联系。
实现效果如图:
实现代码如下:
DownloadDialogFragment如下:
package com.iwanghang.drmplayer;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.BroadcastReceiver;
import android.content.Intent;
import android.content.IntentFilter;
import android.database.Cursor;
import android.graphics.Path;
import android.media.MediaScannerConnection;
import android.net.Uri;
import android.os.Environment;
import android.provider.MediaStore;
import android.support.v4.app.DialogFragment;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Toast;
import com.iwanghang.drmplayer.utils.Constant;
import com.iwanghang.drmplayer.utils.DownloadUtils;
import com.iwanghang.drmplayer.utils.MediaScanner;
import com.iwanghang.drmplayer.utils.MediaUtils;
import com.iwanghang.drmplayer.utils.SearchMusicUtils;
import com.iwanghang.drmplayer.vo.SearchResult;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
/**
* Created by iwanghang on 16/5/3.
* DownloadDialogFargment
*/
public class DownloadDialogFragment extends DialogFragment {
private SearchResult searchResult;//当前要下载的歌曲对象
private MainActivity mainActivity;
public static DownloadDialogFragment newInstance(SearchResult searchResult){
DownloadDialogFragment downloadDialogFragment = new DownloadDialogFragment();
downloadDialogFragment.searchResult = searchResult;
return downloadDialogFragment;
}
private String[] items;
@Override
public void onAttach(Context context) {
super.onAttach(context);
mainActivity = (MainActivity) getActivity();
//items = new String[]{"下载","取消"};
items = new String[]{getString(R.string.download),getString(R.string.cancel)};
}
//创建对话框的事件方法
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final AlertDialog.Builder builder = new AlertDialog.Builder(mainActivity);
builder.setCancelable(true);//返回键可以取消
builder.setItems(items,new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case 0:
//执行下载
downloadMusic();
break;
case 1://取消
dialog.dismiss();
break;
}
}
});
return builder.show();
}
//下载音乐
private void downloadMusic() {
Toast.makeText(mainActivity, "正在下载:" + searchResult.getMusicName(), Toast.LENGTH_LONG).show();
DownloadUtils.getsInstance().setListener(new DownloadUtils.OnDownloadListener() {
@Override
public void onDowload(String mp3Url) { //下载成功
Toast.makeText(mainActivity, "下载成功", Toast.LENGTH_SHORT).show();
System.out.println("DownloadDialogFragment.downloadMusic @ = " + Environment.getExternalStorageDirectory()+Constant.DIR_MUSIC + "/" + mp3Url);
//更新媒体库
scanFile(mainActivity,Environment.getExternalStorageDirectory()+Constant.DIR_MUSIC + "/" + mp3Url);
//更新 本地音乐列表
}
@Override
public void onFailed(String error) { //下载失败
Toast.makeText(mainActivity, error, Toast.LENGTH_SHORT).show();
}
}).download(searchResult);
}
//更新媒体库
/**
* 通知媒体库更新文件
* @param context
* @param filePath 文件全路径
*
* */
public void scanFile(Context context, String filePath) {
Intent scanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
scanIntent.setData(Uri.fromFile(new File(filePath)));
context.sendBroadcast(scanIntent);
}
}
转载请注明出处: http://blog.csdn.net/iwanghang/article/details/51427158
欢迎移动开发爱好者交流
沈阳或周边城市公司有意开发Android,请与我联系
联系方式
微信:iwanghang
QQ:413711276
邮箱:iwanghang@qq.com
沈阳或周边城市公司有意开发Android,请与我联系
联系方式
微信:iwanghang
QQ:413711276
邮箱:iwanghang@qq.com
以上是关于Android开发本地及网络Mp3音乐播放器(十九)通知媒体库更新刚下载的MP3的主要内容,如果未能解决你的问题,请参考以下文章
Android开发笔记(一百八十九)利用LAME录制MP3音频