Tengo problemas con la clase de Soundpool. Aquí va:Error de SoundPool: no hay más nombres de pistas disponibles
En mi aplicación de juego (aplicación de música por cierto) que necesito para reproducir al menos 32 sonidos cortos, al mismo tiempo, por lo que declaro mi soundpool así:
private SoundPool sp;
sp = new SoundPool(128, AudioManager.STREAM_MUSIC, 0);
Después de que la carga de E todos los sonidos MP3 necesarios, aproximadamente 80 sonidos de 55KB cada uno. No tengo problemas para cargar todos los sonidos, ¡pero es lento! Bueno, no es el problema. El verdadero problema es cuando juego unos 20 sonidos al mismo tiempo, hay un error en mi registro:
ERROR/AudioFlinger(59): no more track names available
ERROR/AudioTrack(26349): AudioFlinger could not create track, status: -12
ERROR/SoundPool(26349): Error creating AudioTrack
Después de que cada sonido que intento jugar tiros el mismo error, y no hay sonido se pueden reproducir. Ni siquiera sonidos de otra Activity/soundpool. ¡No tengo ni idea de lo que está pasando ni cómo solucionarlo! ¿Debo cambiar el formato de los archivos de sonido? ¿Debería liberar memoria o algo después de reproducir un sonido?
(estoy probando en un Samsung Galaxy S I9000, 2.3.3 sistema OS. La aplicación es 2,1)
Tal vez necesita implementar SoundPool.OnLoadCompleteListener? – Codeman
para llamar a la versión() para cada uno de los AudioTracks? – Codeman
Asegúrate de que el modo de bucle no esté habilitado, que ninguna pista esté configurada en pausa y que cada mp3 sea realmente tan corto como piensas (sin silencio al final). Como hay una cantidad limitada de pistas de audio disponibles, debe mantener baja la cantidad de pistas de audio en ejecución. Tal vez hay menos de 32 pistas disponibles, por lo que no puede reproducir tantos sonidos al mismo tiempo. Además, algunas implementaciones son defectuosas, y pueden colgarse en algunas pistas (tal vez dependerán de un archivo mp3 incorrecto o algo así), por lo que las pistas disponibles se agotan bastante rápido. Si la aplicación falla, a veces las pistas no se liberan, por lo que no hay sonido. – dronus