2013-03-08 166 views
0

我正在開發一個Android應用程序,它是100聲音效果的集合。 當我玩了25個聲音後,我無法再玩了,我必須關閉應用程序並等待幾分鐘,然後打開應用程序,現在我可以播放其他聲音。聲音播放一些聲音後沒有與媒體播放器玩

final MediaPlayer mp81 = MediaPlayer.create(MainActivity.this, R.raw.a81); 

我玩用下面的代碼的聲音:

mp81.start(); 

我用下面的代碼停止播放聲音:

mp81.seekTo(0); 

我也用stop()方法,但問題仍現有。 是否還有其他方法需要添加?

+0

確保你在播放一個聲音時清除內存 – DjHacktorReborn 2013-03-08 10:33:13

+0

只是一個建議,對於這種任務SoundPool類可能是有用的 – lelloman 2013-03-08 10:34:53

回答

0

首先,使用SoundPool播放短音更爲合適和高效。

其次,您以靜態方式訪問MediaPlayer,這意味着您的情況下您將爲每個聲音創建一個新的MediaPlayer對象,而不是更改數據源。這是對記憶的浪費。我建議你做的路徑的數組到您的聲音,然後實例化MediaPlayer這樣的:

MediaPlayer mp = new MediaPlayer(); 
    try{ 
mp.setDataSource(yourArray[x]); 
mp.prepare(); 
mp.start(); 
}catch(Exception e){ 
    e.printStackTrace(); 
    } 

更多信息,請參考MediaPlayer Document

+0

我跟着你說的,但不幸的是我仍然有問題,應用程序也很快關閉 – 2013-03-08 12:21:53

+0

請發佈您的應用程序崩潰時出現的更新代碼和LogCat消息 – Droidman 2013-03-08 12:27:57

+0

這是我根據上述內容編寫的代碼。問題是,當運行應用程序沒有聲音播放和logcat說:在狀態8調用setDataSource在下面的答案部分看我的代碼.... – 2013-03-09 10:44:45