在switch语句中使用Android MediaPlayer播放声音

在switch语句中使用Android MediaPlayer播放声音,android,audio,android-mediaplayer,Android,Audio,Android Mediaplayer,我试图让我的应用程序在屏幕上显示当前练习时播放声音。我遇到的问题是,一旦播放,声音就会不断重复。我想让媒体播放器播放一次声音。我有一个倒计时也在运行,在改变之前的15秒内,exerciseCount为0。时钟倒数的每一个数字上,声音都在重复。如何让声音只播放一次 switch (currentExercise){ case 0 : mp.reset(); mp = MediaPlayer.create(getBaseContext

我试图让我的应用程序在屏幕上显示当前练习时播放声音。我遇到的问题是,一旦播放,声音就会不断重复。我想让媒体播放器播放一次声音。我有一个倒计时也在运行,在改变之前的15秒内,exerciseCount为0。时钟倒数的每一个数字上,声音都在重复。如何让声音只播放一次

        switch (currentExercise){
     case 0 :
          mp.reset();
          mp = MediaPlayer.create(getBaseContext(), R.raw.lunges); 
          mp.start();
      break;
     case 1 :
          mp.reset();
          mp = MediaPlayer.create(getBaseContext(), R.raw.abdominalcrunches);
          mp.start();
      break;
     case 2 :
          mp.reset();
          mp = MediaPlayer.create(getBaseContext(), R.raw.pushups);
          mp.start();
      break;
     case 3 :
          mp.reset();
          mp = MediaPlayer.create(getBaseContext(), R.raw.squats);
          mp.start();
      break;
     case 4 :
          mp.reset();
          mp = MediaPlayer.create(getBaseContext(), R.raw.rest);
          mp.start();
      break;

      }

您可能希望尝试在交换机周围放置if语句。比如:

if(timer == -1){
     switch (currentExercise){
 case 0 :
      mp.reset();
      mp = MediaPlayer.create(getBaseContext(), R.raw.lunges); 
      mp.start();
  break;
 case 1 :
      mp.reset();
      mp = MediaPlayer.create(getBaseContext(), R.raw.abdominalcrunches);
      mp.start();
  break;
 case 2 :
      mp.reset();
      mp = MediaPlayer.create(getBaseContext(), R.raw.pushups);
      mp.start();
  break;
 case 3 :
      mp.reset();
      mp = MediaPlayer.create(getBaseContext(), R.raw.squats);
      mp.start();
  break;
 case 4 :
      mp.reset();
      mp = MediaPlayer.create(getBaseContext(), R.raw.rest);
      mp.start();
  break;

  }
  }
可能是您的交换机正在循环