2010-12-03 17 views
7

He estado intentando reproducir algunos sonidos al mismo tiempo; Actualmente estoy usando una instancia compartida de SoundPool. Me gustaría que se reproduzcan 1, 2 o 3 sonidos al mismo tiempo y sin demora.Cómo sincronizar sonidos usando SoundPool

Al llamar a SoundPool.play (...) X veces seguidas, los sonidos se reproducen en el orden en que se podría pensar. ¿Qué es lo apropiado para lograr esto, donde puedo preparar todos los sonidos que se jugarán al mismo tiempo y luego jugarlos como uno solo?

Código Sudo:

SoundPool _soundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0); 

_soundPool.load(_context, soundId1, 1); 
_soundPool.load(_context, soundId2, 1); 
_soundPool.load(_context, soundId3, 1); 

_soundPool.play(soundId1, vol, vol, 1, 0, 1f); 
_soundPool.play(soundId2, vol, vol, 1, 0, 1f); 
_soundPool.play(soundId3, vol, vol, 1, 0, 1f); 
+1

relacionada: http://stackoverflow.com/q/4350212/116249 – Patrick

+0

@Patrick, probé el enfoque roscado y al principio pensé que trabajó, o por lo menos lo suficiente cuando se cierra solo tiene dos hilos. pero cuando tomas la misma idea y la amplías para decir 4 hilos, todos haciendo lo mismo, vuelves con la menor cantidad de retrasos. tal vez el siguiente paso sea sumergirse en mezclar los sonidos ... realmente no quería llegar tan lejos con esto, pero en este momento no veo muchas otras opciones. – YetAnotherDeveloper

+1

Creo que la mezcla de sonido es el mejor enfoque. ¿Lo probaste en un teléfono y no solo en un emulador como dijo James en el otro hilo? Si sabe qué sonidos desea reproducir como mezcla, puede configurarlos al principio del ciclo de vida de las aplicaciones, de esa manera no tiene que mezclarlos cuando quiera reproducir los sonidos, lo que con suerte proporcionará un mejor resultado. fluir. – Patrick

Respuesta