Android Laden Sie die Medien aus Allen Ordnern
Ich nur lernen Android-Programmierung für mehrere Monate. Ich habe versucht, zu erstellen eine einfache Musik-player, aber ich habe problem wenn ich das öffnen will alle mp3-Dateien, da ich nur öffnen kann, 1 spesific Ordner, z.B. "sdcard".
Fand ich diesen Beispielcode aus AndroidHive zu spielen mp3-Datei von "sdcard" nur.
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"));
}
}
Während ich fand einen anderen code Lesen können alle mp3-Dateien aus dem ganzen sdcard mit rekursiven, aber ich war verwirrt, da ich nicht bekommen, so rufen Sie die Funktionen in den code oben.
Dies ist der code :
//this method creates a list of file extensions that will be searched
//
public static ArrayList<String> createAudioExtensionsList()
{
ArrayList<String> extensions = new ArrayList<String>();
extensions.add(".mp3");
extensions.add(".ogg");
extensions.add(".flac");
extensions.add(".wav");
extensions.add(".3gp");
return extensions;
}
//simple method to get a file extension (does not work with complex extensions like .tar.gz)
//
public static String getFileExtension(String fileName)
{
String result = fileName.substring(fileName.lastIndexOf("."));
return result;
}
//recursively scans a folder for all files containing one of the file extensions
//
public static LinkedList<File> getFilesInFolder(File rootDir, ArrayList<String> extensions)
{
LinkedList<File> results = new LinkedList<File>();
File[] files = rootDir.listFiles();
for(File file : files)
{
if(file.isDirectory())
results.addAll(getFilesInFolder(file, extensions));
else
{
for(String s : extensions)
{
String ext = getFileExtension(file.getName());
if(s.equalsIgnoreCase(ext))
results.add(file);
}
}
}
return results;
}
Ich glaube, dass getFileExtension werden wieder alle Daten von mp3-songs, aber ich verstehe nicht, wie Sie es nennen, in die wichtigsten Funktionen (File home = new File(MEDIA_PATH);). Ich hoffe, Sie können helfen oder mir sagen, wie genau wir nennen die Funktionen. Ich danke Ihnen sehr.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Tut mir Leid zu enttäuschen, aber alle diesen code, um eine manuelle Suche nach Dateien ist bereits automatisch durch die Content-Anbieter alles, was Sie tun müssen, ist eine Abfrage der content-provider für Musik.
Den Media Store hält die Verweise auf die Felder, die Sie Abfragen möchten für.
Wahrscheinlich so etwas wie dieses:
und dann haben Sie einen cursor mit der Musik-id, einen stream zu der eigentlichen Musik, die Künstler, name, album-name und display name,
Zu bekommen, die die songs
Implementieren musiclist onclick listner. In dieser listener u erhalten die position der angeklickten song , so vergehen die Weg von diesem Lied zur nächsten Aktivität über intents . und spielen Sie es wie folgt.
Das Lied zu spielen , wählen Sie es aus der Liste und beginnen neue aactivity und spielen Sie es wie folgt