[Android] Riproduci il file audio dalla directory delle risorse



Answers

Questa funzione funzionerà correttamente :)

// 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

Ho il codice seguente:

AssetFileDescriptor afd = getAssets().openFd("AudioFile.mp3");
player = new MediaPlayer();
player.setDataSource(afd.getFileDescriptor());
player.prepare();
player.start();

Il problema è che, quando eseguo questo codice, inizia a riprodurre tutti i file audio nella directory delle risorse, in ordine alfabetico invece di riprodurre solo il file audio richiesto. Che cosa sto facendo di sbagliato? C'è un modo migliore per riprodurre file audio dalla directory delle risorse?

Domanda successiva: Esiste una differenza tra il mantenimento dei file audio nella directory delle risorse e il loro mantenimento nella directory res / raw? Oltre al fatto che non ottengono gli ID se sono nella directory delle risorse. Se sposto i file audio nella cartella res / raw, ho un problema con il riutilizzo di MediaPlayer s perché non esiste un parametro id per setDataSource() . Non riesco a trovare una buona guida per la gestione di questo tipo di problema.




Links