2011-06-09 55 views
2

我正在使用SoundPool將多個聲音片段載入並播放它們。Android SoundPool堆限制

從我所知道的情況來看,它正確運作正確。但.load期間()調用我正在我的日誌垃圾郵件與:

06-09 11:30:26.110: ERROR/AudioCache(23363): Heap size overflow! req size: 1050624, max size: 1048576 

我加載在11的聲音文件,這些2很小〜3KB,其餘均爲10KB之間 - 15KB。 Windows在報告

大小:128KB

上午我推什麼的Soundpool是能夠保持限制:在磁盤上的114KB

大小?是否有一些設置我應該改變以避免溢出?任何指導我應該如何設置我的音頻控制將非常感激。

+0

SoundPool相當麻煩。即使您使用的是相對較小的聲音文件,但最好還是選擇使用MediaPlayer。 – Brian 2011-06-09 16:51:47

+1

您可以使用多個SoundPool實例來防止堆大小錯誤。你可以從http://stackoverflow.com/a/15331311/1124084找到更多的細節 – andyao 2013-03-11 04:48:54

回答

3

SoundPool將把加載的音頻解壓縮爲PCM數據,因此它可以立即播放而不會解碼延遲。如果你正在加載的音頻被壓縮很大,比如MP3,那麼它可能會變得很大。嘗試將音頻編碼爲單聲道,如果立體聲不是必需的(它通常不適用於短暫的聲音效果)。