Listen Sie alle Musikdateien in MediaStore mit den Pfaden auf

Ok, also ich arbeite jetzt seit ein paar Tagen an diesem Projekt und habe die meiste Zeit damit verbracht, die gesamte Musik auf einem Gerät in einer LIST VIEW oder etwas anderem aufzulisten. Ich habe jetzt nach ein paar Tagen gesucht und das bringt mich um. Ich bin an einem Punkt so nah gekommen, dass die gesamte Musik in einem Ordner angezeigt wurde. Da die meisten Benutzer Unterordner für Titel und Alben haben, muss ich Unterordner nach MP3s oder Musikdateien durchsuchen können.

Folgendes habe ich bisher für die Musiksammlung:

package com.androidhive.musicplayer;

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

import android.provider.MediaStore;

public class SongsManager {
// SDCard Path
final String MEDIA_PATH = new String(MediaStore.Audio.Media.getContentUri("external").toString());
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"));
    }
}

}

Vielen Dank an alle, die helfen können. :)

Antworten auf die Frage(4)

Ihre Antwort auf die Frage