2013-09-07 4 views
0

나는 약간의 문제가있다. 기본적으로 나는 하나의 버튼 설정으로 다양한 사운드를 재생할 수 있으며, 클릭 할 때마다 임의의 사운드가 재생되어야한다. 그게 좋긴하지만, 내가 연주하는 사운드 파일의 양과 같은 버튼 클릭의 특정 금액 후에, 그것은 더 이상 연주를 중지합니다. 왜 그런 일이 일어나고 있는지, 주변을 돌아 다니는 방법에 관해서는 꽤 어설프다. 설정 한 클릭 수 후 임의의 오디오 버튼이 작동을 멈춘다.

private final int SOUND_CLIPS = 11; 
private int mfile[] = new int[SOUND_CLIPS]; 
private Random rnd = new Random(); 
MediaPlayer mpButtonOne; 

    protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    //I list all my sounds files here, removed for sake of saving space.   

    Button bButtonOne = (Button) findViewById(R.id.button1); 
    bButtonOne.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      mpButtonOne = MediaPlayer.create(myMenu.this, mfile[rnd.nextInt(SOUND_CLIPS)]); 
      mpButtonOne.seekTo(0); 
      mpButtonOne.start(); 
      } 
    }); 
    } 
} 

이 코드의 모든

내가 그것을 그러나 그것에게 시간의 집합 금액을 전용으로 보인다 모든 버튼 클릭에 클립 목록에서 임의의 사운드 클립을 재생되는 수행 할 다음 중지 무엇을합니까 아무것도 연주. 어떤 도움을 주시면 감사하겠습니다.

+1

얼마나 많은 시간을 :

http://developer.android.com/guide/topics/media/mediaplayer.html

은 기본적으로 당신이 onCompletionListener을 구현하고 MediaPlayer를에 등록하고 정리가 수행 할을 그만두 겠니? start를 호출하기 전에'seekTo (0)'을 호출하는 이유는 무엇입니까? 또한, 소리 재생을 멈 추면 단추를 누를 때 logcat에 메시지가 표시됩니까? – FoamyGuy

+0

재생하기 위해 저장 한 클립의 양인 약 11 번의 클릭 후 재생이 중지되고 아무 것도 로그캣에 메시지가 표시되지 않습니다. – user2756111

+0

재생되는 11 개의 클립에서 이미 재생 된 클립을 반복합니까? 또는 매번 11 개의 다른 클립을 다른 순서로 재생합니까? – FoamyGuy

답변

1

언제든지 MediaPlayer를 출시 하시겠습니까? 당신은 모든 클릭으로 그것을 공개하지 않을 때마다 새로운 것을 만드는 것처럼 보입니다. 결국 자원이 부족할 수 있습니다.

해제 MediaPlayer를 섹션 읽기 :

mpButtonOne.setOnCompletionListener(new SoundCompletionListener()); 


    private class SoundCompletionListener implements OnCompletionListener{ 

    @Override 
    public void onCompletion(MediaPlayer mp) { 
     if(mp!=null){ 
      mp.release(); 
      mp=null; 
     } 
    } 
} 
관련 문제