【问题标题】:Java : Play List of Tracks In Android MediaPlayerJava : 在 Android MediaPlayer 中播放曲目列表
【发布时间】:2016-06-29 09:48:34
【问题描述】:

我正在尝试使用 Android Studio 中的 MediaPlayer 播放曲目列表。这是一个音乐应用程序,有播放、暂停和下一步按钮。我可以使用媒体播放器循环播放一首歌曲,但我无法弄清楚如何使用下一个按钮转到下一首曲目。

如果有人可以帮助我使用 Java 代码在 Android Studio 中使用媒体播放器播放曲目列表,我会很高兴。

非常感谢!

【问题讨论】:

  • 请添加您的代码 sn-p 并指出问题出在哪里,这太宽泛了。

标签: java android arraylist android-mediaplayer


【解决方案1】:

从 SD 卡读取 MP3 文件的类

这个类将从设备 sdcard 中读取所有文件并过滤 扩展名为 .mp3 的文件。

import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;
import java.util.HashMap;

public class SongsManager {
    // SDCard Path
    final String MEDIA_PATH = new String("/sdcard/");
    private ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>();

    // Constructor
    public SongsManager(){

    }

    /**
     * Function to read all mp3 files from sdcard
     * and store the details in ArrayList
     * */
    public ArrayList<HashMap<String, String>> getPlayList(){
        File home = new File(MEDIA_PATH);

        if (home.listFiles(new FileExtensionFilter()).length > 0) {
            for (File file : home.listFiles(new FileExtensionFilter())) {
                HashMap<String, String> song = new HashMap<String, String>();
                song.put("songTitle", file.getName().substring(0, (file.getName().length() - 4)));
                song.put("songPath", file.getPath());

                // Adding each song to SongList
                songsList.add(song);
            }
        }
        // return songs list array
        return songsList;
    }

    /**
     * Class to filter files which are having .mp3 extension
     * */
    class FileExtensionFilter implements FilenameFilter {
        public boolean accept(File dir, String name) {
            return (name.endsWith(".mp3") || name.endsWith(".MP3"));
        }
    }
}

检索歌曲播放列表

SongsManager songManager;
ArrayList<HashMap<String, String>> playList = new ArrayList<HashMap<String, String>>();
playList = songManager.getPlayList();

playList 对象可用于播放单个歌曲,使用 ListView

public void  playSong(int songIndex){
    // Play song
    try {
        mp.reset();
        mp.setDataSource(songsList.get(songIndex).get("songPath"));
        mp.prepare();
        mp.start();
        // Displaying Song title
        String songTitle = songsList.get(songIndex).get("songTitle");
        songTitleLabel.setText(songTitle);

        // Changing Button Image to pause image
        btnPlay.setImageResource(R.drawable.btn_pause);

        // set Progress bar values
        songProgressBar.setProgress(0);
        songProgressBar.setMax(100);

        // Updating progress bar
        updateProgressBar();
    } catch (IllegalArgumentException e) {
        e.printStackTrace();
    } catch (IllegalStateException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}


在此之前先了解一下Android Media Player API docs


更详细的解释请使用Link

希望对你有帮助:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多