[Android] Wiedergabe der Audiodatei aus dem Verzeichnis "Assets"



Answers

Diese Funktion wird richtig funktionieren :)

// MediaPlayer m; /*assume, somewhere in the global scope...*/

public void playBeep() {
    try {
        if (m.isPlaying()) {
            m.stop();
            m.release();
            m = new MediaPlayer();
        }

        AssetFileDescriptor descriptor = getAssets().openFd("beepbeep.mp3");
        m.setDataSource(descriptor.getFileDescriptor(), descriptor.getStartOffset(), descriptor.getLength());
        descriptor.close();

        m.prepare();
        m.setVolume(1f, 1f);
        m.setLooping(true);
        m.start();
    } catch (Exception e) {
        e.printStackTrace();
    }
}
Question

Ich habe den folgenden Code:

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ühre, er beginnt, alle Audiodateien im Verzeichnis "Assets" in alphabetischer Reihenfolge abzuspielen, anstatt nur die angeforderte Audiodatei abzuspielen. Was mache ich falsch? Gibt es eine bessere Möglichkeit, Audiodateien aus dem Verzeichnis "Assets" abzuspielen?

Folgefrage: 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() . Ich kann keine gute Richtlinie für die Behandlung dieser Art von Problem finden.




Links