SoundPool error: no more track names available

У меня проблемы с классом soundpool. Вот как это происходит:

В моем игровом приложении (музыкальном приложении, кстати) мне нужно воспроизводить по крайней мере 32 коротких звука одновременно, поэтому я объявляю свой soundpool так:

private SoundPool sp;
sp = new SoundPool(128, AudioManager.STREAM_MUSIC, 0);

После этого я загружаю все необходимые MP3 звуки, около 80 звуков по 55KB каждый. У меня нет проблем с загрузкой всех звуков, но это медленно! Но это не проблема. Настоящая проблема в том, что когда я воспроизвожу около 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

После этого каждый звук, который я пытаюсь воспроизвести, выдает ту же ошибку, и ни один звук не может быть воспроизведен. Даже звуки из другой Activity / soundpool. Я понятия не имею, что происходит и как это исправить! Должен ли я изменить формат звуковых файлов? Должен ли я освободить память или что-то еще после воспроизведения звука?

(Я тестирую на Samsung Galaxy S I9000, ОС 2.3.3. Приложение 2.1)

15
задан Craigy 5 December 2011 в 16:44
поделиться