2

私は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()(および再作成)する必要がありますか?

4

1 に答える 1

2

デバイスあたり32個のオブジェクトのようです。ですから、Destroy必要のないときはいつでも彼らにとって良いです(onStoponDestroy

于 2012-04-19T11:02:41.843 に答える