当前位置: 首页 > 知识库问答 >
问题:

如何列出Media Player中的音频文件,然后在android中播放

万嘉石
2023-03-14

我想得到在android中的媒体播放器中添加的所有歌曲的列表。如果我没有存储所有音乐文件的路径,那么我如何检索歌曲列表?

有没有什么方法可以在不从用户获取路径的情况下获取存储歌曲的路径?

已更新-

请帮忙。谢谢

共有1个答案

秦凯定
2023-03-14

尝试以下代码从SDCard获取mp3:-

final String MEDIA_PATH = Environment.getExternalStorageDirectory()
        .getPath() + "/";
private ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>();
private String mp3Pattern = ".mp3";

// Constructor
public SongsManager() {

}

/**
 * Function to read all mp3 files and store the details in
 * ArrayList
 * */
public ArrayList<HashMap<String, String>> getPlayList() {
    System.out.println(MEDIA_PATH);
    if (MEDIA_PATH != null) {
        File home = new File(MEDIA_PATH);
        File[] listFiles = home.listFiles();
        if (listFiles != null && listFiles.length > 0) {
            for (File file : listFiles) {
                System.out.println(file.getAbsolutePath());
                if (file.isDirectory()) {
                    scanDirectory(file);
                } else {
                    addSongToList(file);
                }
            }
        }
    }
    // return songs list array
    return songsList;
}

private void scanDirectory(File directory) {
    if (directory != null) {
        File[] listFiles = directory.listFiles();
        if (listFiles != null && listFiles.length > 0) {
            for (File file : listFiles) {
                if (file.isDirectory()) {
                    scanDirectory(file);
                } else {
                    addSongToList(file);
                }

            }
        }
    }
}

private void addSongToList(File song) {
    if (song.getName().endsWith(mp3Pattern)) {
        HashMap<String, String> songMap = new HashMap<String, String>();
        songMap.put("songTitle",
                song.getName().substring(0, (song.getName().length() - 4)));
        songMap.put("songPath", song.getPath());

        // Adding each song to SongList
        songsList.add(songMap);
    }
}

final Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
    final String[] cursor_cols = {
            MediaStore.Audio.Media._ID,
            MediaStore.Audio.Media.ARTIST,
            MediaStore.Audio.Media.ALBUM,
            MediaStore.Audio.Media.TITLE,
    };
    final String where = MediaStore.Audio.Media.IS_MUSIC + "=1";
    final Cursor cursor = getContentResolver().query(uri, cursor_cols, where, null, null);
    cursor.moveToNext();
    final String artist = cursor.getString(_cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST));
    final String album = cursor.getString(_cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM));
    final String track = cursor.getString(_cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE));
    doSomethingHere(artist, album, track);
 类似资料:
  • 今天,我制作了一个在Android中播放音乐的应用程序。 使用MediaPlayer播放音频文件时失败;它无法播放任何文件音频。此异常引发日志cat,如: E/MediaPlayer:错误(1,-2147483648) 带系统。错误:java。io。IOException:准备失败:状态=0x1 W/System.err:android.media.MediaPlayer.prepare(本机方法

  • 本文向大家介绍Android MediaPlayer 播放音频的方式,包括了Android MediaPlayer 播放音频的方式的使用技巧和注意事项,需要的朋友参考一下 主要介绍使用MediaPlayer播放音频的方式。关于MediaPlayer的基础知识,比如状态,可以参考Android MediaPlayer 基础简介。 为了方便表达,定义变量名为mediaPlayer。 MediaPlay

  • 我正在做一个简单的媒体录制/播放器应用程序,录制部分已成功完成。但现在我对媒体播放器的角色有了问题。让我告诉你这些问题: 当我尝试用媒体播放器播放媒体文件时,会显示如下准备错误: JAVAio。IOException:准备失败:状态=0x1 我如何解决这个问题? 我的三门课: -RecordFragment.java: 播放片段。java: -播放适配器。java:

  • RTSP视频可以在Android MediaPlayer中播放吗?如果是,怎么做?我得到的服务器死亡错误(100,0)这是我的编码部分包com的错误。实例样本媒体; 这是我的Logcat结果,我得到的结果是07-09 12:17:05.484:E/MediaPlayer(3990):error(1,-2147483648)07-09 12:17:05.484:W/System。err(3990):

  • 我有一些代码(在WPF应用程序中),当一些文本被复制到剪贴板时,它将使用SpeechSynthesizer读出文本(我所有的代码都在这篇文章的底部)。 然而,以这种方式播放音频不允许我暂停、倒带或播放等。 所以我想我应该使用SpeechSynthesis来保存一个wav文件。然后使用MediaPlayer类,因为它很容易暂停、播放等。 但是,保存文件后,该文件不会在我的媒体播放器中播放。这个文件很

  • 主要内容:本节引言:,1.相关方法详解,2.使用代码示例,3.本节示例代码下载:,本节小结:本节引言: 本节带来的是Android多媒体中的——MediaPlayer,我们可以通过这个API来播放音频和视频 该类是Androd多媒体框架中的一个重要组件,通过该类,我们可以以最小的步骤来获取,解码 和播放音视频。它支持三种不同的媒体来源: 本地资源 内部的URI,比如你可以通过ContentResolver来获取 外部URL(流) 对于Android所支持的的媒体格式列表 对于Androi