2013-12-11 150 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

相关问题