Android 在mediaplayer中重复音频

Android 在mediaplayer中重复音频,android,audio,media-player,repeat,Android,Audio,Media Player,Repeat,对于mediaplayer中的重复音频,请编写以下代码,但不能正确工作: seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int i, boolean b) { if (b) { G.mediaPlayer.seekTo(i

对于mediaplayer中的重复音频,请编写以下代码,但不能正确工作:

seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
      @Override
      public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
        if (b) {
          G.mediaPlayer.seekTo(i);
        }
        if (i >= G.mediaPlayer.getDuration()) {
          if (isRepeat) {
            G.mediaPlayer.seekTo(0);
            G.mediaPlayer.start();
          }else {
            G.mediaPlayer.seekTo(0);
            G.mediaPlayer.pause();
          }
        }
      }
对于播放音频,请执行以下操作:

    public void playSongWithIndex(final int songIndex) {
    progressBar.setVisibility(View.VISIBLE);
    if (music_exist.exists()) {
      playMusicOfflineMode();
    } else {
      try {
        G.mediaPlayer.reset();
        G.mediaPlayer.setDataSource(songList.get(songIndex).getFile_128());
        G.mediaPlayer.prepareAsync();
        G.mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
          @Override
          public void onPrepared(MediaPlayer mediaPlayer) {
            runOnUiThread(new Runnable() {
              @Override
              public void run() {

              }
            });

            G.mediaPlayer.start();
            seekBar.setMax(G.mediaPlayer.getDuration());
            progressBar.setVisibility(View.INVISIBLE);

            timer = new Timer();
            timer.schedule(new MainTimer(), 0, 1000);

          }
        });
      } catch (IllegalArgumentException | IllegalStateException | IOException e) {
        e.printStackTrace();
      }
    }
  }
但重复音频有时工作完成,有时当seekbar结束时停止工作。
请帮助我如何重复音频?

我不确定,但我认为您可以使用loop…例如


mmediplayer.setLooping(true)

您可以将媒体播放器循环设置为true,请使用以下代码:

 G.mediaPlayer.setLooping(true);
如果您想知道播放机何时完成,您应该像这样使用OnCompletionListener

 G.mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
        @Override
        public void onCompletion(MediaPlayer mediaPlayer) {


        }
    });

确定以帮助其他开发人员编写我的正确答案:

    @Override
  public void onCompletion(MediaPlayer mediaPlayer) {

    if (isRepeat) {
      G.mediaPlayer.start();
    } else {
      G.mediaPlayer.seekTo(0);
      seekBar.setProgress(0);
      current_duration_text.setText("" + utils.milliSecondsToTimer(0));
      play_music_img.setImageResource(R.drawable.ic_play_arrow_black_24dp);
    }
  }

我希望有用,但我喜欢我的代码有时能工作,有时在媒体播放器停止时结束。如果使用循环不起作用,请尝试重新启动,但当您得到“onCompletion”时。
public void onCompletion(MediaPlayer MediaPlayer){if(isRepeat){G.MediaPlayer.start();}else{G.mediaPlayer.seekTo(0);当前_duration_text.setText(“+utils.毫秒计时器(0));播放音乐_img.setImageResource(R.drawable.ic_play_arrow_black_24dp);}
我尝试此操作,但当重复为false时,搜索栏不会重置。mediaplayer如何完成搜索栏重置?只需使用
搜索栏。设置值(0);
或重置值。请回答此问题