1

私が達成しようとしているのは、すべての mp3 ファイルの URL とタイトルを配列リストに取得して返すことです。すべてフォルダーから: /ext_card/Music/ およびすべてのサブフォルダー。

私が調べたオプションはすべて行き詰まっているようで、インターネットで調べたすべての回答はメディアストアを指していますが、それを使用する方法がわかりません

私が見つけたメディアストアの説明はせいぜい遅れているので、RTFMでたらめを言わないでください。

誰でも私を助けてくれるか、すべての mp3 ファイルに対する単純な作業メディアストア クエリの例を教えてください。

4

2 に答える 2

4

これを使用すると、SD カードからすべての 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";
}
于 2013-03-06T10:40:52.480 に答える
-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
        }
    }
}
于 2013-03-06T10:10:44.537 に答える