获取外部卡上的所有MP3文件

时间:2013-03-06 10:06:43

标签: android mp3 mediastore

我想要实现的是将arraylist中的所有mp3文件'url和Title都归还给它。全部来自文件夹:/ ext_card / Music /和所有子文件夹。

我探索过的所有选项似乎都被卡住了,我在互联网上查找的所有答案都指向了mediastore,但我不知道如何使用它

并且不要给我RTFM废话,因为我发现媒体商店的解释充其量是迟钝的。

所以有人可以帮助我或者给我一个关于所有mp3文件的简单工作媒体商店查询的例子吗?

2 个答案:

答案 0 :(得分:4)

使用它可以帮助您从SD CARD获取所有MP3歌曲

private static ArrayList<genericSongClass> songs = null;

public void BindAllSongs() {        
        /** Making custom drawable */
        String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0";
        final String[] projection = new String[] {
                MediaStore.Audio.Media.DISPLAY_NAME,
                MediaStore.Audio.Media.ARTIST,
                MediaStore.Audio.Media.DATA};
                final String sortOrder = MediaStore.Audio.AudioColumns.TITLE
                        + " COLLATE LOCALIZED ASC";

                try {
                    // the uri of the table that we want to query
                    Uri uri = android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
                    // query the db
                    cursor = getBaseContext().getContentResolver().query(uri,
                            projection, selection, null, sortOrder);
                    if (cursor != null) {
                        songs = new ArrayList<genericSongClass>(cursor.getCount());
                        cursor.moveToFirst();                       
                        while (!cursor.isAfterLast()) { 
                            GSC = new genericSongClass();
                            GSC.songTitle = cursor.getString(0);
                            GSC.songArtist = cursor.getString(1);   
                            GSC.songData = cursor.getString(2);
                            songs.add(GSC);
                            cursor.moveToNext();
                        }
                    }
                } catch (Exception ex) {

                } finally {
                    if (cursor != null) {
                        cursor.close();
                    }
                }       

    }

public class genericSongClass {
        String songTitle = "";
        String songArtist = "";
        String songData = "";
        String isChecked = "false";
}

答案 1 :(得分:-1)

这是一种递归方式来做这件事,

getMp3s(Arraylist<File> list, File dir){
    File[] files = dir.listFiles();
    for(File file : files){
        if(file.isDirectory()){
            getMp3s(list, file);
        }else{
            //add mp3s to list here
        }
    }
}