私はOpenSLESを使用しており、Androidアプリには複数のチャネルが必要なので、複数のプレーヤーオブジェクトを作成します(さらに、再生する必要のあるmp3ファイルごとに1つのプレーヤーオブジェクト)。これは1つのアプリケーションでは正常に機能しますが、作成した別のアプリを実行すると、サウンドの再生に失敗し、ログファイルに次のように表示されます。
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 for Androidは、アプリケーションごとに1つのエンジン、および最大32のオブジェクトをサポートします
それで、アプリケーションごとに32個のオブジェクトですか、それともグローバルに32個のオブジェクトですか?もしそうなら、アプリが非アクティブになるたびに(onPause / onStop)、Player-objectsをDestroy()(および再作成)する必要がありますか?