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