public void playTrack(Track track, Track nextTrack) { setMusicType(MusicType.TRACK); synchronized (mediaPlayers) { if (currentMediaPlayer == null) { currentMediaPlayer = setupPlayer(track); } else if (currentMediaPlayer.getTrack() != track) { for (TrackMediaPlayer player : mediaPlayers) player.stop(); currentMediaPlayer = setupPlayer(track); } if (currentMediaPlayer != null) { currentMediaPlayer.start(); runOnListener((MusicPlayerListener l) -> l.onTrackStart(track)); if (nextTrack != null) { TrackMediaPlayer nextPlayer = currentMediaPlayer.getNext(); if (nextPlayer == null || nextPlayer.getTrack() != nextTrack) currentMediaPlayer.setNext(setupPlayer(nextTrack)); } else { currentMediaPlayer.setNext(null); } } } }
@Override public void onCompletion(MediaPlayer _mp) { TrackMediaPlayer mp = (TrackMediaPlayer) _mp; currentMediaPlayer = mp.getNext(); runOnListener((MusicPlayerListener l) -> l.onTrackComplete(mp.getTrack())); }