2013-12-11 2 views
0

안녕하세요, 왜 31 버튼을 30 번이나 버튼을 클릭 한 후 소리가 더 이상 들리지 않고 몇 번의 클릭만으로 멈추지 않을지 묻고 싶습니다. 누구든지 날 도와 줄 수 있니? 미리 감사드립니다. 여기에 제 코드가 있습니다.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 인스턴스가 예외를 발생시킵니다. 미디어 플레이어의 인스턴스를 하나만 만들고 가능한 한 많이 재사용해야합니다.

+0

이렇게 시도했지만 사운드가 재생되지 않습니다. http://pastebin.com/J47iPiCL – John

+0

재생을 중지 한 후에야 해제해야합니다. 귀하의 샘플 코드에서 너무 빨리 출시 할 경우 – Simon

+0

나는 개인 변수로 mediaplayer를 선언하고, onCreate(), mp.start(), onClick(), 그리고 마지막으로 mp로 인스턴스화하고 mp.prepare()를 선언하겠습니까? .release() itPause(). – Simon

관련 문제