«Нет доступных имен треков» при использовании OpenSL ES - PullRequest
2 голосов
/ 15 марта 2012

Я использую OpenSL ES, и моему андроид-приложению нужно несколько каналов, поэтому я создаю несколько объектов проигрывателя (плюс один объект проигрывателя для каждого из mp3-файлов, которые мне нужно воспроизвести).Это прекрасно работает для одного приложения, но когда я запустил другое приложение, которое я создал, оно не сможет воспроизвести любой звук и файлы журнала, скажем

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)

Хорошо, я прочитал, что это означает, что яиз свободных объектов, и я должен освободить некоторые объекты.

Однако, согласно http://mobilepearls.com/labs/native-android-api/opensles/

OpenSL ES для Android поддерживает один движок для приложения и до 32 объектов

Так это 32 объекта на приложение или это глобально 32 объекта?Если это так, я вынужден уничтожать () (и воссоздавать) объекты Player каждый раз, когда мое приложение становится неактивным (onPause / onStop)?

1 Ответ

1 голос
/ 19 апреля 2012

Похоже, это 32 объекта на устройство.Так что лучше Destroy их, когда не нужно (onStop, onDestroy)

...