Tengo el siguiente código:
AssetFileDescriptor afd = getAssets().openFd("AudioFile.mp3");
player = new MediaPlayer();
player.setDataSource(afd.getFileDescriptor());
player.prepare();
player.start();
El problema es que, cuando ejecuto este código, comienza a reproducir todos los archivos de audio en el directorio de activos, en orden alfabético en lugar de solo reproducir el archivo de audio que solicité. ¿Qué estoy haciendo mal? ¿Hay una mejor manera de reproducir archivos de audio desde el directorio de activos?
Pregunta de seguimiento: ¿Hay alguna diferencia entre mantener los archivos de audio en el directorio de activos y mantenerlos en el directorio res / raw? Además del hecho de que no obtienen identificadores si están en el directorio de activos. Si muevo los archivos de audio a la carpeta res / raw, entonces tengo un problema con la reutilización de MediaPlayer
s porque no hay ningún parámetro de id setDataSource()
. No puedo encontrar una buena guía para manejar este tipo de problema.
fuente
Esta función funcionará correctamente :)
fuente
MediaPlayer m
debe serstatic
o tener otra referencia . Si tienem
una función sin ninguna referencia, laGC
"recopilará"Aquí mi versión estática:
fuente
Corrección de la función anterior para reproducir y pausar
fuente
sonido de inicio
método
fuente
esto funciona para mi:
En la actividad principal, en crear:
Cómo usar en el código (al hacer clic en el botón):
fuente