Ich habe den folgenden Code:Wiedergabe Audiodatei aus dem Vermögen Verzeichnis
AssetFileDescriptor afd = getAssets().openFd("AudioFile.mp3");
player = new MediaPlayer();
player.setDataSource(afd.getFileDescriptor());
player.prepare();
player.start();
Das Problem ist, dass, wenn ich diesen Code ausführen, beginnt es, all Audio-Dateien im Verzeichnis Vermögen spielen, anstatt in alphabetischer Reihenfolge nur die von mir angeforderte Audiodatei abzuspielen. Was mache ich falsch? Gibt es eine bessere Möglichkeit, Audiodateien aus dem Verzeichnis "Assets" abzuspielen?
Nachfragen: Gibt es einen Unterschied zwischen dem Speichern von Audiodateien im Verzeichnis "Assets" und dem Speichern dieser Dateien im res/row-Verzeichnis? Abgesehen davon, dass sie keine IDs erhalten, wenn sie sich im Verzeichnis "Assets" befinden. Wenn ich die Audiodateien in den Ordner res/raw verschiebe, habe ich ein Problem mit der Wiederverwendung von MediaPlayer
s, weil es keinen ID-Parameter für setDataSource()
gibt. Ich kann keine gute Richtlinie für die Behandlung dieser Art von Problem finden.
Es hat funktioniert. Vielen Dank. Aber ich denke meine Version SOLLTE auch funktionieren. –
Ihre Version würde funktionieren, wenn Sie nur eine Datei im Anlagenverzeichnis hätten. Der Inhalt des Inhaltsverzeichnisses ist keine tatsächliche Datei auf der Festplatte. Sie werden alle nacheinander zusammengestellt. Also, wenn Sie nicht angeben, wo zu starten und wie viele Bytes zu lesen, wird der Player bis zum Ende lesen (das heißt, wird weiterhin alle Dateien im Verzeichnis Vermögenswerte spielen) –
Sehr gute Antwort! – Redax