Android开发本地及网络Mp3音乐播放器(十九)通知媒体库更新刚下载的MP3

Posted iwanghang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android开发本地及网络Mp3音乐播放器(十九)通知媒体库更新刚下载的MP3相关的知识,希望对你有一定的参考价值。

转载请注明出处: http://blog.csdn.net/iwanghang/article/details/51427158
觉得博文有用,请点赞,请留言,请关注,谢谢!~


实现功能:

通知媒体库更新


纠结了几天,百度到一个方法,可以在安卓4.4,通知媒体库更新。

媒体库更新了,重新打开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开发本地及网络Mp3音乐播放器(十九)通知媒体库更新刚下载的MP3的主要内容,如果未能解决你的问题,请参考以下文章

Android应用开发--MP3音乐播放器代码实现

Android应用开发--MP3音乐播放器界面设计

Android命令行播放MP3音乐

Android开发笔记(一百八十九)利用LAME录制MP3音频

Android开发笔记(一百八十九)利用LAME录制MP3音频

Android开发笔记(一百八十九)利用LAME录制MP3音频