Я знаю, что SoundPool был предназначен для обработки небольших звуков, похожих на fx, и я убедился, что мои 4 звуковых клипа, которые я хочу воспроизвести один за другим в некоторой последовательности, достаточно малы.
Я использовал ogg quality 0 и клипы 35kb, 14kb, 21kb и 23kb на общую сумму 92kb сжатого звука. Я понятия не имею, как оценить, какой будет несжатый размер, но это не должно быть много, верно?
Таким образом, когда я играю 4 последовательных звука, он хорошо работает первые 9 раз (9 последовательностей x 4 звука), но начинает вызывать проблемы с памятью в последовательности девяток для одного из звуков. Когда я начинаю видеть ошибку, это всегда последовательность 9.
Какой лучший способ справиться с этим? У меня есть несколько идей:
1) сжимает звуки еще больше (качество ogg -1 и моно вместо стерео)
2) постоянно выгружать и загружать звуки, используя SoundPool.load и SoundPool.unload
3) выпускать и воссоздавать время от времени экземпляр SoundPool
Есть ли что-нибудь еще, что я могу сделать? Смущает, что Android API не может обрабатывать такие маленькие клипы. Интересно, как люди создают игры с множеством звуковых эффектов ...
Ошибки выглядят так:
ОШИБКА / AudioFlinger (35): недостаточно памяти для размера AudioTrack = 1048640
DEBUG / MemoryDealer (35): AudioTrack (0x25018, размер = 1048576)