Trocitos cortos de sonido, se usa la clase SoundPool.
SoundPool soundPool = new SoundPool(
20, //indica cuantos sonidos como MÁXIMO queremos reproducir al mismo tiempo
AudioManager.STREAM_MUSIC, //el canal de audio a usar
0 //de momento esto no sirve para nada);
Para cargar el efecto de sonido a memoria se usa pasandole un AssetFileDescriptor al método SoundPool.load(). El AssetFileDescriptor sale del AssetManager ¿Como?
Ejemplo de carga de un .OGG
AssetFileDescriptor descriptor = assetManager.openFd("sonidito.ogg");
int soniditoId = soundPool.load(descriptor, 1);
// el entero que devuelve es el manejador "handle" del efecto de sonido cargado
Una vez tenemos el numerito identificador del sonido para reproducirlo hay que hacer:
soundPool.play( soniditoId, // identificador del sonido
1.0f, //volumen canal izdo de 0f a 1f
1.0f, //volumen canal dcho de 0f a 1f
0, //prioridad (no se usa)
0,//cada cuanto se debe repetir en bucle (poner 0)
1 //velocidad de reproduccion );
Para liberar memoria cuando no se use el efecto:
soundPool.unload(soniditoId);
Para liberar memoria cuando no se vaya a usar ningun efecto:
SoundPool.release()

No hay comentarios:
Publicar un comentario