- Cuando queremos reproducir ficheros pequeños (menos de 1 mb): Usaremos SounPool
- Cuando queremos reproducir ficheros grandes (>1 mb): Usaremos AudioManager
Aquí nos vamos a centrar en el caso simple (SoundPool). A grandes rasgos, SoundPool es como su propio nombre indica una cola que contiene sonidos. Estos sonidos han de ser previamente cargados mediante el método "load" y luego los ejecutamos mediante el método "play".
OJO: la carga de los ficheros es asíncrona por lo que se puede dar un problema muy curioso (que he sufrido en mis propias carnes), si tenemos una linea en la que cargamos el sonido y la siguiente lo reproduce, veremos que MIENTRAS DEPURAMOS PASO A PASO, el sonido se reproduce, mientras que si lo EJECUTAMOS no se oye nada, esto se debe a que en tiempo de ejecución, el tiempo que tarde en pasar de una línea de código a la siguiente no es suficiente para que haya dado tiempo a cargar el sonido debido a que el proceso de carga es asíncrono.
Vamos al asunto:
Antes de nada, añadimos un fichero a la carpeta "raw" dentro de (src/main/res/raw en Android Studio), en nuestro caso hemos añadido alarma.mp3
Lo segundo que haremos será crear el objeto SoudPool en el evento oncreate del activity y cargaremos el sonido dejándolo listo para ser ejecutado, al pulsar un botón. Es importante cargar el sonido antes de ejecutarlo para prevenir lo que he comentado más arriba.
public class layout_Sonido extends Activity {
//Sonido
private SoundPool sp;
private int sonidoAlarma;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_gps);
//Creamos el Pool
//el pool puede contener 5 ficheros de sonido
sp = new SoundPool(5,AudioManager.STREAM_MUSIC,1);
//Cargamos el sonido
sonidoAlarma = sp.load(this,R.raw.alarma,1);
}
El siguiente paso es ejecutar el sonido, para ello hemos de añadir la siguiente línea allá donde queramos utilizar el sonido:sp.play(sonidoAlarma,1,1,1,0,1);
En el método play podemos fijar el volumen derecho, izquierdo, número de veces que se repetirá el sonido velocidad de reproducción, etc, para ello podemos revisar la documentación de este método.
No hay comentarios:
Publicar un comentario