1. 程式人生 > >Android第三次程式作業——音樂播放器

Android第三次程式作業——音樂播放器

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