サウンドプール クラスに問題があります。ここに行きます:
私のゲームアプリ (ところで音楽アプリ) では、少なくとも 32 の短いサウンドを同時に再生する必要があるため、サウンドプールを次のように宣言します。
private SoundPool sp;
sp = new SoundPool(128, AudioManager.STREAM_MUSIC, 0);
その後、必要なすべての MP3 サウンドをロードします。それぞれ 55 KB の約 80 のサウンドです。すべてのサウンドをロードするのに問題はありませんが、遅いです! まあ、それは問題ではありません。実際の問題は、同時に約 20 のサウンドを再生すると、ログにエラーが記録されることです。
ERROR/AudioFlinger(59): no more track names available
ERROR/AudioTrack(26349): AudioFlinger could not create track, status: -12
ERROR/SoundPool(26349): Error creating AudioTrack
その後、再生しようとするすべてのサウンドで同じエラーがスローされ、サウンドを再生できません。別のアクティビティ/サウンドプールの音さえありません。何が起こっているのか、それを修正する方法についての手がかりがありません!サウンド ファイルの形式を変更する必要がありますか? サウンドを再生した後、メモリなどを解放する必要がありますか?
(Samsung Galaxy S I9000、2.3.3 OS システムでテストしています。アプリは 2.1 です)