2013-04-06 2 views
0

У меня есть макет, в котором множественным кнопка showing.onclick кнопки один звуковой код игры respectively.My это вроде как, но ее не работает: -Как играть в звук при нажатии кнопки в макете?

@Override 
public void onClick(View view) { 
    resetPlayer(); 
    int index = 0; 
    if (view.equals(objbutton1)) 
     index = R.raw.sound1; 

    while (true) { 
     this.objplayer = MediaPlayer.create(this, index); 
     this.objplayer.setLooping(false); 
     this.objplayer.start(); 
     this.objplayer 
       .setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
        @Override 
        public void onCompletion(MediaPlayer mp) { 
         MainActivity.this.objplayer.release(); 
         MainActivity.this.objplayer = null; 

        } 
       } 
       ); 
     if(view.equals(objbutton2)) 
     { 
      index=R.raw.sound2; 
      continue; 

     } 
     if(view.equals(objbutton3)) 
     { 
      index=R.raw.sound3; 
      continue; 

     } 
     if(view.equals(objbutton4)) 
     { 
      index=R.raw.sound4; 
      continue; 

     } 
     if(view.equals(objbutton5)) 
     { 
      index=R.raw.sound5; 
      continue; 

     } 
     break; 
    } 

} 

private void resetPlayer() { 
    if (this.objplayer != null) { 
     if (this.objplayer.isPlaying()) 
      this.objplayer.stop(); 
     this.objplayer.release(); 
     this.objplayer = null; 
    } 

App играет только один звук, и когда нажмите другую кнопку звук не будет изменен

+1

Почему вы используете 'while (true)'? – FoamyGuy

+0

, потому что я хочу играть в звук до завершения, пожалуйста, предложите мне – SKT

ответ

0

Используйте этот

MediaPlayer mp = MediaPlayer.create(getApplicationContext(), index); 
        mp.start(); 

Как ...

private MediaPlayer mp; // declare it in public area. 

    public void onClick(View view) { 
    int index = 0; 
    if (view.equals(objbutton1)){ 
     index = R.raw.sound1; 
      if(mp !=null && mp.isPlaying()) mp.stop(); 
     mp = MediaPlayer.create(getApplicationContext(), index); 
      mp.start(); 
     } 
     if(view.equals(objbutton2)) 
     { 
      index=R.raw.sound2; 
      if(mp !=null && mp.isPlaying()) mp.stop(); 
     mp = MediaPlayer.create(getApplicationContext(), index); 
      mp.start(); 
     } 
     if(view.equals(objbutton3)) 
     { 
      index=R.raw.sound3; 
      if(mp !=null && mp.isPlaying()) mp.stop(); 
      mp = MediaPlayer.create(getApplicationContext(), index); 
     mp.start(); 
     } 
     if(view.equals(objbutton4)) 
     { 
      index=R.raw.sound4; 
      if(mp !=null && mp.isPlaying()) mp.stop(); 
      mp = MediaPlayer.create(getApplicationContext(), index); 
     mp.start(); 
     } 
     if(view.equals(objbutton5)) 
     { 
      index=R.raw.sound5 
      if(mp !=null && mp.isPlaying()) mp.stop(); 
     mp = MediaPlayer.create(getApplicationContext(), index); 
     mp.start(); 
     } 
} 

И в onDestroy() положите это mp.release();

+0

Привет, Это не работает для меня. Мое требование состоит в том, что предположим, что я нажимаю кнопку запуска первой кнопки, здесь два случая сначала, если я не нажимал ни одну другую кнопку, тогда первый звук будет играйте до завершения другого случая, если я нажму другую кнопку, затем отпустите сначала, а другой звук будет воспроизводиться. – SKT

+0

Я отредактировал свой ответ. – AwadKab

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