音乐播放器MediaPlayer

音乐播放器MediaPlayer

    • 获取音乐列表
    • 常用方法

获取音乐列表

通过内容提供者的索要方,获取到本机下载的歌曲,再将歌曲添加入集合,设置适配器显示在listview中
注意读取权限 :

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    contentResolver = getContentResolver();
        Cursor query = contentResolver.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, new String[]{MediaStore.Audio.Media.TITLE, MediaStore.Audio.Media.ARTIST, MediaStore.Audio.Media.DURATION, MediaStore.Audio.Media.DATA}, null, null,null);

        while(query.moveToNext()){
            String name = query.getString(query.getColumnIndex(MediaStore.Audio.Media.TITLE));
            String songer = query.getString(query.getColumnIndex(MediaStore.Audio.Media.ARTIST));
            long time = query.getLong(query.getColumnIndex(MediaStore.Audio.Media.DURATION));
            String address = query.getString(query.getColumnIndex(MediaStore.Audio.Media.DATA));
            HashMap<String, Object> map = new HashMap<>();
            Log.d("歌名", name+"---"+songer+"---"+time+"----"+address);
            map.put("name",name);
            map.put("songer",songer);
            map.put("time",time);
            String time1 = getTime(time);
            map.put("time1",time1);
            map.put("address",address);
            songs.add(map);
        }

常用方法

void setDataSource(String path) :通过一个具体的路径来设置MediaPlayer的数据源,path可以是本地的一个路径,也可以是一个网络路径
int getCurrentPosition() 获取当前播放的位置
int getAudioSessionId() 返回音频的session ID
int getDuration() 得到文件的时间
boolean isLooping () 是否循环播放
boolean isPlaying() 是否正在播放
void pause () 暂停
void start () 开始
void stop () 停止
void prepare() 同步的方式装载流媒体文件。
void prepareAsync() 异步的方式装载流媒体文件。
void reset() 重置MediaPlayer至未初始化状态。
void release () 回收流媒体资源。
void seekTo(int msec) 指定播放的位置(以毫秒为单位的时间)
void setLooping(boolean looping) 设置是否单曲循环
setOnCompletionListener(MediaPlayer.OnCompletionListener listener) 网络流媒体播放结束时回调
setOnErrorListener(MediaPlayer.OnErrorListener listener) 发生错误时回调 **
setOnPreparedListener(MediaPlayer.OnPreparedListener listener):当装载流媒体完毕的时候回调。

当我们初始化好音乐列表时,就可以直接通过MediaPlayer对象调用方法。

 public void Start( HashMap<String,Object> map){  //可以通过传参来实现播放
        this.map=map;
        if(player!=null){
            if(player.isPlaying()){
                player.stop();
                player.release();
                player=null;
                try {
                    player=new MediaPlayer();
                    player.setDataSource(map.get("address").toString());
                    player.prepare();
                    player.start();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }else {
                try {
                    player.setDataSource(map.get("address").toString());
                    player.prepare();
                    player.start();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }

public void stop(){
        player.pause();//暂停
    }

public void kaishi(){
        player.start();//开始
    }


实现效果:

音乐播放器MediaPlayer_第1张图片

你可能感兴趣的:(Android)