示例#1
0
  public void playSoundList(SoundFileList soundList, boolean reset) throws IOException {
    this.isPlaying = true;
    this.pausedPlayer = null;
    this.soundFileList = soundList;

    for (MediaPlayer player : this.mediaPlayerList) {
      player.release();
    }

    this.mediaPlayerList = new ArrayList<MediaPlayer>();

    while (this.mediaPlayerList.size() < soundList.getFileCount()) {
      MediaPlayer player = new MediaPlayer();
      player.setVolume(0.5f, 0.5f);
      this.mediaPlayerList.add(player);
    }

    for (int i = 0; i < soundList.getFileCount(); ++i) {
      File file = soundList.getFileAtIndex(i);
      MediaPlayer player = this.mediaPlayerList.get(i);
      String path = file.getAbsolutePath();
      player.setDataSource(path);
    }

    MediaPlayer firstPlayer = this.mediaPlayerList.get(0);
    firstPlayer.setOnPreparedListener(new TunerOnPreparedListener(this, reset));

    for (MediaPlayer player : this.mediaPlayerList) {
      player.prepare();
    }

    for (int i = 0; i < this.mediaPlayerList.size() - 1; ++i) {
      MediaPlayer player = this.mediaPlayerList.get(i);
      MediaPlayer nextPlayer = this.mediaPlayerList.get(i + 1);
      player.setNextMediaPlayer(nextPlayer);
    }

    MediaPlayer lastPlayer = this.mediaPlayerList.get(this.mediaPlayerList.size() - 1);
    lastPlayer.setOnCompletionListener(
        new OnCompletionListener() {
          @Override
          public void onCompletion(MediaPlayer _mediaPlayer) {
            try {
              TunerAudioControl.this.playNextItem(false);
            } catch (Exception _e) {
              CustomLog.appendException(_e);
              _e.printStackTrace();
              throw new RuntimeException(_e);
            }
          }
        });
  }