Hadi Khezrpor
Hadi Khezrpor

Reputation: 401

repeat audio in mediaplayer

for repeat audio in mediaplayer write this code but not work correct :

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();
          }
        }
      }

and for play audio do this :

    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();
      }
    }
  }

but repeat audio some times work done and sometimes when seekbar well be over stop and do not work . please help me how to repeat audio ?

Upvotes: 3

Views: 4802

Answers (3)

Hadi Khezrpor
Hadi Khezrpor

Reputation: 401

ok for help other developer write my correct answer :

    @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);
    }
  }

I hope to be useful

Upvotes: 1

Ahmed Ali
Ahmed Ali

Reputation: 804

You can set Media player looping to true,use this code:

 G.mediaPlayer.setLooping(true);

And if you want to know when the player has finished you should use OnCompletionListener like this:

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


        }
    });

Upvotes: 2

gh darvishani
gh darvishani

Reputation: 160

i am not sure but i think you can use loop ...for example

mMediaPlayer.setLooping(true);

Upvotes: 0

Related Questions