1600802064

1、实现的功能

  • 实现播放,暂停,播放上一首,下一首功能
  • 显示播放列表
  • 可以播放3首歌曲

2、实现步骤

  1. 截图:

              

 

          2、主要功能代码:

             获取sdcard卡中的歌曲

private static final File PATH = Environment.getExternalStorageDirectory();// 获取SD卡总目录。
    class MusicFilter implements FilenameFilter {
        public boolean accept(File dir, String name) {
            return (name.endsWith(".mp3"));//返回当前目录所有以.mp3结尾的文件
        }
    }

    public void getSDcardFile(File groupPath){ //循环获取sdcard目录下面的目录和文件

        for(int i=0; i< groupPath.listFiles().length; i++){
            File childFile = groupPath.listFiles()[i];

            //假如是目录的话就继续调用getSDcardFile()将childFile作为参数传递的方法里面
            if(childFile.isDirectory()){
                getSDcardFile(childFile);
            }else{
                //如果是文件的话,判断是不是以.mp3结尾,是就加入到musicList里面
                if(childFile.toString().endsWith(".mp3")){
                    musicList.add(childFile.getAbsolutePath());
                }
            }
        }
    }

       播放

public void play() {
        try {
            player.reset(); //重置多媒体
            String dataSource = musicList.get(songNum);//得到当前播放音乐的路径
            setPlayName(dataSource);//截取歌名
            // 指定参数为音频文件
            player.setAudioStreamType(AudioManager.STREAM_MUSIC);
            player.setDataSource(dataSource);//为多媒体对象设置播放路径
            player.prepare();//准备播放
            player.start();//开始播放
            //setOnCompletionListener 当当前多媒体对象播放完成时发生的事件
            player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                public void onCompletion(MediaPlayer arg0) {
                    next();//如果当前歌曲播放完毕,自动播放下一首.
                }
            });

        } catch (Exception e) {
            Log.v("MusicService", e.getMessage());
        }
    }

    //继续播放
    public  void goPlay(){
        int position = getCurrentProgress();
        player.seekTo(position);//设置当前MediaPlayer的播放位置,单位是毫秒。
        try {
            player.prepare();//  同步的方式装载流媒体文件。
        } catch (Exception e) {
            e.printStackTrace();
        }
        player.start();
    }

      上一首、下一首、暂停、停止播放

public void next() {
        songNum = songNum == musicList.size() - 1 ? 0 : songNum + 1;
        play();
    }

    public void last() {
        songNum = songNum == 0 ? musicList.size() - 1 : songNum - 1;
        play();
    }
    // 暂停播放
    public void pause() {
        if (player != null && player.isPlaying()){
            player.pause();
        }
    }

    public void stop() {
        if (player != null && player.isPlaying()) {
            player.stop();
            player.reset();
        }
    }

   3、项目链接:https://git.coding.net/WWKing/MusicPlayer.git

           4、apk链接:https://coding.net/u/WWKing/p/MusicPlayer/git/raw/master/main/MusicPlayer.apk(歌曲需放在SD卡根目录,点击开始/暂停播放)

 

posted @ 2018-12-11 10:13  蚂蚁小分队  阅读(246)  评论(0编辑  收藏  举报