miércoles, 9 de noviembre de 2011

Efectos de Sonido

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