我遇到了soundpool類的麻煩。這裏有雲:SoundPool錯誤:沒有更多可用的曲目名稱
在我的遊戲應用程序(音樂應用程序的BTW),我需要在同一時間重現至少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的聲音。我不知道發生了什麼或如何解決它!我應該改變聲音文件的格式嗎?播放聲音後我應該釋放記憶還是什麼?
(我在三星Galaxy S I9000測試,2.3.3 OS系統,該應用程序是2.1)
也許你需要實現SoundPool.OnLoadCompleteListener? – Codeman
爲每個音軌調用release()? – Codeman
確保沒有啓用循環模式,沒有軌道設置爲暫停,並且每個mp3都如您所想的那麼短(最終沒有沉默)。由於可用的音軌數量有限,因此必須保持低音軌音量。也許有少於32首曲目可用,所以你不能同時播放這麼多的聲音。另外一些實現是越野車,並且可能會掛在一些軌道上(可能依賴於一個壞的mp3文件或者某個東西),因此可用軌道用得很快。如果應用程序崩潰,有時軌道不會釋放,所以沒有聲音。 – dronus