2013-12-11 146 views
0

嗨我想問一下,爲什麼在點擊一個帶有聲音的按鈕之後,在31點以後,聲音將不再被聽到,並且會在點擊幾下後掛起?誰能幫幫我嗎?在此先感謝這裏是我的代碼。30次點擊後mediaplayer停止播放?

SharedPreferences soundPrefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); 
boolean sound = soundPrefs.getBoolean("Sound", true); 
MediaPlayer clickLetters = MediaPlayer.create(Gameplay.this, R.raw.click_letters); 

     switch(v.getId()) { 
      case R.id.btnA: 
       if (sound == true) 
       { 
        clickLetters.start(); 
       } 
       Answer = Answer + alphabetA; 
       tvAns.setText(Answer); 

      break; 
      case R.id.btnB: 
       if (sound == true) 
       { 
        clickLetters.start(); 
       } 
       Answer = Answer + alphabetS; 
       tvAns.setText(Answer); 
      break; 

回答

1

可能是因爲您在每次單擊時分配一個新的MediaPlayer實例。你應該調用release()來釋放資源,如果沒有釋放,過多的MediaPlayer實例將導致異常。 你應該只創建一個mediaplayer的實例並儘可能地重用它

+0

我試過了,但聲音不起作用。 http://pastebin.com/J47iPiCL – John

+0

你應該在它停止播放後才能釋放它。在你的示例代碼中,你會很快發佈它 – Simon

+0

如果我是你,我會將mediaplayer聲明爲私有變量,在onCreate(),mp.start()onClick()中實例化和mp.prepare(),最後mp .release()它onPause()。 – Simon

相關問題