2013-12-11 5 views
0

привет. Хотелось бы спросить, почему после нажатия кнопки w/sound 30 раз на 31-й день звук больше не будет слышен и будет висеть после еще нескольких щелчков? Кто-нибудь может мне помочь, пожалуйста? Спасибо заранее, вот мой код.mediaplayer остановить звук после 30 кликов?

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 приведут к исключению. вы должны создать только 1 экземпляр медиаплеера и использовать его как можно больше.

+0

Я пробовал это так, но звук не воспроизводится. http://pastebin.com/J47iPiCL – John

+0

вы должны выпустить его только после того, как он перестает играть. в вашем примере кода вы слишком быстро его освобождаете – Simon

+0

, если бы я был вами, я бы объявлял mediaplayer как частную переменную, создавал экземпляр и mp.prepare() в onCreate(), mp.start() onClick() и, наконец, mp .release() it onPause(). – Simon

Смежные вопросы