0

我有一個「點擊」,即高頻率,但20-25後點擊的聲音消失。缺省情況下Android的媒體播放器停止音頻

MediaPlayer mp; 

       mp = MediaPlayer.create(mService.getApplicationContext(),R.raw.click2); 
       mp.start(); 
      } 

的Android塊這種循環?

+0

您是否在每次播放聲音時都創建新的MediaPlayer?是的,爲什麼不創建一次並重新使用它? – Michael

+0

對!我會盡力! – totzi10

+0

我收到一個錯誤:nullpointerexception,如果我將該行放在外面 – totzi10

回答

0

那麼我沒有看到你提供的代碼中的循環,但如果你實際上正在循環中創建MediaPlayer s而不是調用release(),那麼你將通過使用太多的可用資源。我有幾個提示給你。

提示1:不要使用mService.getApplicationContext(),因爲(我認爲)mService是一個Service並且已經一個ContextServiceContext繼承)。你基本上不應該使用getApplicationContext()

提示#2:使用一個MediaPlayer並注意state machine。嘗試這樣的:

MediaPlayer mp = new MediaPlayer(); 
... 
while (whateverCondition) { // I don't know what loop construct you are using... 
    mp.reset(); 
    mp.setDataSource(this, 
     Uri.parse("android.resource://com.your.package/" + R.raw.click2); 
    mp.prepare(); 
    mp.start(); 
} 
... 
mp.release(); 

您將需要填寫適當的包名稱,但它應該讓你在正確的軌道上。