Pregunta

Estoy usando OpenSl ES y mi aplicación de Android tiene necesidad de múltiples canales, por lo que creo múltiples objetos de jugador (más un objeto-jugador para cada uno de los archivos MP3 que necesito para jugar).Esto funciona bien para una sola aplicación, pero cuando realizo otra aplicación que he creado, no podrá reproducir cualquier sonido y los archivos de registro dicen

E/AudioFlinger(  119): no more track names available
E/AudioTrack( 6884): AudioFlinger could not create track, status: -12
E/libOpenSLES( 6884): AudioTrack::initCheck status 4294967284
W/libOpenSLES( 6884): Leaving Object::Realize (SL_RESULT_CONTENT_UNSUPPORTED)

De acuerdo, he leído que esto significa que estoy fuera de los objetos libres y debo soltar algunos objetos.

Sin embargo, según http://mobilepearls.com/labs/native-android-api / OpenSles /

OpenSL ES para Android admite un solo motor por aplicación, y Hasta 32 objetos

¿Entonces es que 32 objetos por aplicación, o son globalmente 32 objetos?Si es así, me voy obligado a destruir () (y volver a crear) objetos de jugador cada vez que mi aplicación se vuelve inactiva (onpause / ontstop)?

¿Fue útil?

Solución

Parece ser 32 objetos por dispositivo.Por lo que es mejor generaracodiCetAcodificarlos cuando no sea necesario (Destroy, onStop)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top