Domanda

Sto utilizzando OpenSL ES e la mia app Android ha bisogno di più canali, quindi creo più oggetti lettore (più un oggetto lettore per ciascuno dei file mp3 che devo riprodurre).Funziona bene per un'applicazione, ma quando ho eseguito un'altra app che ho creato, non sarà possibile riprodurre alcun suono e file di registro

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)

Ok, ho letto che questo significa che ho esaurito gli oggetti gratuiti e dovrei rilasciare alcuni oggetti.

Tuttavia, secondo http://mobilepearls.com/labs/native-android-api/opensles/

OpenSL es per Android supporta un singolo motore per applicazione e fino a 32 oggetti

Quindi sono 32 oggetti per applicazione o sono 32 oggetti a livello globale?Se è così, sono costretto a Destroy() (e ricreare) gli oggetti Player ogni volta che la mia app diventa inattiva (onPause/onStop)?

È stato utile?

Soluzione

Sembra che ci siano 32 oggetti per dispositivo.Quindi è meglio Destroy loro ogni volta che non sono necessari (onStop, onDestroy)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top