在媒体播放器中重复播放音频

时间:2017-05-22 19:48:48

标签: android audio media-player repeat

对于媒体播放器中的重复音频,请编写此代码但不能正常工作:

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

但重复音频有时会完成工作,有时当搜索栏完全停止并且不起作用时。 请帮我怎么重复音频?

3 个答案:

答案 0 :(得分:1)

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

 a.append("<td bgcolor='red'").append(json.get("scenarioName")).append("</td>\n")

如果你想知道玩家何时完成,你应该使用 OnCompletionListener

<div ng-controller="AccordionDemoCtrl">
    <a href="#" editable-text="user.name" onbeforesave="checkName($data)">
    {{ user.name || 'empty' }}
  </a> <!- wORKS HERE-->
    <uib-accordion>
      <div uib-accordion-group class="panel-default" is-open="status.open">
        <uib-accordion-heading>
            <a href="#" editable-text="user.name" onbeforesave="checkName($data)">
              {{ user.name || 'empty' }}
            </a> <!- NOT wORKS HERE-->
          <span ng-click="ignoreClick($event);">
            Text accordion
            <button ng-click="setMessage();">
              Click me
            </button>
          </span>
          <i class="pull-right glyphicon" ng-class="{'glyphicon-chevron-down': status.open, 'glyphicon-chevron-right': !status.open}"></i>
        </uib-accordion-heading>
        Some stuff
      </div>
    </uib-accordion>
    {{ message }}
  </div>

答案 1 :(得分:1)

好的帮助其他开发人员写下我的正确答案:

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

我希望有用

答案 2 :(得分:0)

我不确定,但我认为你可以使用循环...例如

mMediaPlayer.setLooping(真);