私はsoundpoolクラスに問題があります。ここではそれを行く:SoundPoolエラー:利用可能なトラック名がありません
私のゲームアプリ(ところで音楽アプリ)で、私は同時に少なくとも32の短い音を再現する必要があるので、私はそのように私soundpoolを宣言:
private SoundPool sp;
sp = new SoundPool(128, AudioManager.STREAM_MUSIC, 0);
そのI負荷後必要なすべてのMP3サウンド、それぞれ55KBの約80音。私はすべての音を読み込むことに問題はないが、その速度は遅い!それは問題ではありません。それは私が再生しようと、すべての音が同じエラーをスローし、何の音を再生することはできないの後
ERROR/AudioFlinger(59): no more track names available
ERROR/AudioTrack(26349): AudioFlinger could not create track, status: -12
ERROR/SoundPool(26349): Error creating AudioTrack
:本当の悩みは、私は同じ時間で約20サウンドを再生するとき、私のログにエラーがありますです。別のアクティビティ/サウンドプールのサウンドさえありません。私は何が起こっているのか、それをどう修正するのかを知りません!サウンドファイルのフォーマットを変更する必要がありますか?音を鳴らした後、記憶や何かを解放すべきですか?
(私はサムスンギャラクシーS I9000、2.3.3 OSシステム上でテストしています。アプリは2.1である)
おそらくあなたは、 SoundPool.OnLoadCompleteListenerを実装する必要がありますか? – Codeman
各AudioTrackのrelease()を呼び出すには? – Codeman
ループモードが有効になっていないこと、トラックが一時停止に設定されておらず、すべてのmp3が実際には短いと思う(最後は無音)。利用可能なオーディオトラックの量が限られているので、実行中のオーディオトラックの量を低く抑えなければなりません。多分、利用可能なトラックが32以下であるため、同時に多くのサウンドを再生することはできません。また、いくつかの実装はバグがあり、いくつかのトラック(おそらく悪いmp3ファイルや何かに依存しているかもしれません)でハングアップする可能性があります。アプリケーションがクラッシュすると、トラックが解放されないことがあるので、サウンドはありません。 – dronus