Android Open Source - audioplayer Play List Manager






From Project

Back to project page audioplayer.

License

The source code is released under:

GNU General Public License

If you think the Android project audioplayer listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package fr.julien_dumortier.simplemusicplayer.service.playlist;
/*from  www  . j a  v a  2 s.  c  o m*/
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import fr.julien_dumortier.simplemusicplayer.R;
import fr.julien_dumortier.simplemusicplayer.item.Track;
import fr.julien_dumortier.simplemusicplayer.playlistview.SavedPlaylistManager;
import fr.julien_dumortier.simplemusicplayer.thememanager.DisplayManager2;

public class PlayListManager {

  public static final int NO_REPEAT = 0, REPEAT_ALL = 1, REPEAT_ONE = 2;
  private List<Track> mTracks;
  private List<Integer> mPositionTrack;
  private boolean isRandom;
  private int isRepeat;//0 => pas de rptition, 1 => toutes, 2 => juste la courante
  private MusicMediaPlayer mMusicMediaPlayer;
  
  public PlayListManager(MusicMediaPlayer musicMediaPlayer) {
    mTracks = new ArrayList<Track>();
    mPositionTrack = new ArrayList<Integer>();
    mMusicMediaPlayer = musicMediaPlayer;
  }
  
  private Track getNextTrackByPos(int realPos) {
    try {
      int posCurrentTrack = mPositionTrack.indexOf(Integer.valueOf(realPos));
      if(posCurrentTrack!=-1 && posCurrentTrack+1 < mPositionTrack.size()) {
        return mTracks.get(mPositionTrack.get(posCurrentTrack+1));
      }
    } catch(Exception e) {}
    return null;
  }
  
  private Track getPreviousTrackByPos(int realPos) {
    try {
      int posCurrentTrack = mPositionTrack.indexOf(Integer.valueOf(realPos));
      if(posCurrentTrack!=-1 && posCurrentTrack-1 < mPositionTrack.size() && posCurrentTrack > 0) {
        return mTracks.get(mPositionTrack.get(posCurrentTrack-1));
      }
    } catch(Exception e) {}
    return null;
  }
  
  public Track getNextTrack(Track track) throws EndOfPlayListException {
    try {
      //rpter un seul
      if(isRepeat == REPEAT_ONE)
        return track;
      
      Track nextTrack = getNextTrackByPos(mTracks.indexOf(track));
      if(nextTrack!=null)
        return nextTrack;
      
      //rpter tous
      if(isRepeat == REPEAT_ALL && mTracks.size()>0)
        return mTracks.get(mPositionTrack.get(0)); //retourne le premier

    } catch(Exception e) {}
    throw new EndOfPlayListException();
  }
  
  public Track getPreviousTrack(Track track) throws EndOfPlayListException {
    try {
      //rpter un seul
      if(isRepeat == REPEAT_ONE)
        return track;
      
      Track previousTrack = getPreviousTrackByPos(mTracks.indexOf(track));
      if(previousTrack!=null)
        return previousTrack;
  
      //repeter tous
      if(isRepeat == REPEAT_ALL && mTracks.size()>0)
        return mTracks.get(mTracks.size()-1); //retourne le dernier

    } catch(Exception e) {}
    throw new EndOfPlayListException();
  }
  
  /** @return toutes les piste de la playlist */
  public List<Track> getAllTracks() {
    return mTracks;
  }
  
  /** ajoute une piste et la li immediatement */
  public void addTrackAndRun(Track track) {
    Track tmp = addTrack(track);
    if(tmp!=null)
      mMusicMediaPlayer.playTrack(tmp);
  }
  
  /** supprime toutes les pistes de la playliste et arrete la lecture 
   * @param withClearView */
  public void removeAllTracks(boolean withClearView) {
    if(withClearView && mTracks.size()>0 && DisplayManager2.getActiveLastPlaylist(mMusicMediaPlayer.mContext)) {
      SavedPlaylistManager.saveLastPlayList(mMusicMediaPlayer.mContext, mTracks);
    }
    mMusicMediaPlayer.stop(withClearView);
    mTracks = new ArrayList<Track>();
    mPositionTrack = new ArrayList<Integer>();
  }
  
  /** supprime une piste de la liste de lecture */
  public void removeTrack(Track track) {
    if(mMusicMediaPlayer.getCurrentTrack()==track) {
      try {
        mMusicMediaPlayer.playTrack(getNextTrack(track));
      } catch (EndOfPlayListException e) {
        mMusicMediaPlayer.stop(true);
          if(mMusicMediaPlayer.mToastManager!=null)
            mMusicMediaPlayer.mToastManager.showMessage(mMusicMediaPlayer.mContext.getResources().getText(R.string.end_playlist).toString());
      }
    }
    int pos = mTracks.indexOf(track);
    mTracks.remove(track);
    mPositionTrack.remove(Integer.valueOf(pos));
  }
  
  /** ajoute une piste a la liste */
  public Track addTrack(Track track) {
    boolean isEmpty = mTracks.size()==0;
    if(mTracks.contains(track))
      track = new Track(track);
    mTracks.add(track);
    updateRandom();
    if(isEmpty) {
      mMusicMediaPlayer.playTrack(track);
      return null;
    } else
      return track;
  }
  
  /** ajoute plusieurs pistes  la liste */
  public boolean addTracks(List<Track> tracks) {
    boolean isEmpty = mTracks.size()==0;
    mTracks.addAll(tracks);
    updateRandom();
    if(isEmpty) {
      if(mTracks.size()>0)
        mMusicMediaPlayer.playTrack(mTracks.get(0));
    }
    return isEmpty;
  }
  
  
  public void setRepeatMode(int repeat) {
    if(repeat>REPEAT_ONE) {
      repeat=NO_REPEAT;
    }
    isRepeat = repeat;
    mMusicMediaPlayer.refreshRepeatViews(repeat);
  }
  
  public int getRepeatMode() {
    return isRepeat;
  }
  
  public void setRandom(boolean random) {
    isRandom = random;
    mMusicMediaPlayer.refreshRandomViews(isRandom);
    updateRandom();
  }
  
  public void updateRandom() {
    if(isRandom)
      activeRandom();
    else 
      disableRandom();
  }
  
  private void disableRandom() {
    List<Integer> pos = new ArrayList<Integer>();
    for(int i = 0; i<mTracks.size(); i++)
      pos.add(i);
    mPositionTrack.clear();
    mPositionTrack=pos;
  }
  
  private void activeRandom() {
    List<Integer> pos = new ArrayList<Integer>();
    for(int i = 0; i<mTracks.size(); i++)
      pos.add(i);
    Collections.shuffle(pos);
    mPositionTrack.clear();
    mPositionTrack=pos;
  }
  
  public boolean isRandomMode() {
    return isRandom;
  }

  public void moveTrack(Track selectedTrack, int newPos) {
    if(mTracks.remove(selectedTrack)) {
      try {
        mTracks.add(newPos, selectedTrack);
      } catch(IndexOutOfBoundsException e) {
        e.printStackTrace();
      }
    }
  }

  public void removeTracks(List<Track> selectedTracks) {
    for(Track track:selectedTracks)
      removeTrack(track);
  }
}




Java Source Code List

fr.julien_dumortier.simplemusicplayer.DevInfo.java
fr.julien_dumortier.simplemusicplayer.DrawerListAdapter.java
fr.julien_dumortier.simplemusicplayer.IMusicMediaControllerGetter.java
fr.julien_dumortier.simplemusicplayer.MainActivity.java
fr.julien_dumortier.simplemusicplayer.browsemanager.BrowseCover.java
fr.julien_dumortier.simplemusicplayer.browsemanager.BrowseManager.java
fr.julien_dumortier.simplemusicplayer.coveralbumeditor.CoverAlbumEditor.java
fr.julien_dumortier.simplemusicplayer.coveralbumeditor.CoverAlbumGetter.java
fr.julien_dumortier.simplemusicplayer.coveralbumeditor.PromptCovers.java
fr.julien_dumortier.simplemusicplayer.equalizer.EqualizerActivity.java
fr.julien_dumortier.simplemusicplayer.equalizer.EqualizerConfigurationDataBase.java
fr.julien_dumortier.simplemusicplayer.equalizer.VerticalSeekBar.java
fr.julien_dumortier.simplemusicplayer.equalizer.preset.Preset.java
fr.julien_dumortier.simplemusicplayer.item.Album.java
fr.julien_dumortier.simplemusicplayer.item.Artist.java
fr.julien_dumortier.simplemusicplayer.item.Genre.java
fr.julien_dumortier.simplemusicplayer.item.Item.java
fr.julien_dumortier.simplemusicplayer.item.Playlist.java
fr.julien_dumortier.simplemusicplayer.item.Track.java
fr.julien_dumortier.simplemusicplayer.item.itemadapter.AlbumAdapter.java
fr.julien_dumortier.simplemusicplayer.item.itemadapter.ArtistAdapter.java
fr.julien_dumortier.simplemusicplayer.item.itemadapter.CurrentPlayAnimationManager.java
fr.julien_dumortier.simplemusicplayer.item.itemadapter.GenreAdapter.java
fr.julien_dumortier.simplemusicplayer.item.itemadapter.ItemAdapter.java
fr.julien_dumortier.simplemusicplayer.item.itemadapter.ItemClicManager.java
fr.julien_dumortier.simplemusicplayer.item.itemadapter.OrganisableTrackAdapter.java
fr.julien_dumortier.simplemusicplayer.item.itemadapter.PlayListAdapter.java
fr.julien_dumortier.simplemusicplayer.item.itemadapter.TrackAdapter.java
fr.julien_dumortier.simplemusicplayer.notifynews.NotifyNews.java
fr.julien_dumortier.simplemusicplayer.playerview.FullScreenPlayerViewController.java
fr.julien_dumortier.simplemusicplayer.playerview.IPlayerViewController.java
fr.julien_dumortier.simplemusicplayer.playerview.MiniPlayerViewController.java
fr.julien_dumortier.simplemusicplayer.playerview.TimeFormater.java
fr.julien_dumortier.simplemusicplayer.playlistview.MultiSelectManager.java
fr.julien_dumortier.simplemusicplayer.playlistview.PlayListManagerActivity.java
fr.julien_dumortier.simplemusicplayer.playlistview.SaveManagerView.java
fr.julien_dumortier.simplemusicplayer.playlistview.SavedPlaylistManager.java
fr.julien_dumortier.simplemusicplayer.service.BackgroundBinder.java
fr.julien_dumortier.simplemusicplayer.service.MusicPlayerService.java
fr.julien_dumortier.simplemusicplayer.service.bluetoohactionmanager.BluetoothReceiver.java
fr.julien_dumortier.simplemusicplayer.service.notificationplayer.NotificationManagerService.java
fr.julien_dumortier.simplemusicplayer.service.notificationplayer.NotificationPlayer.java
fr.julien_dumortier.simplemusicplayer.service.phonestatemanager.PhoneCallStateManager.java
fr.julien_dumortier.simplemusicplayer.service.playlist.EndOfPlayListException.java
fr.julien_dumortier.simplemusicplayer.service.playlist.IMediaPlayerController.java
fr.julien_dumortier.simplemusicplayer.service.playlist.MusicMediaPlayer.java
fr.julien_dumortier.simplemusicplayer.service.playlist.PlayListManager.java
fr.julien_dumortier.simplemusicplayer.thememanager.ColorPreferences.java
fr.julien_dumortier.simplemusicplayer.thememanager.DisplayManager2.java
fr.julien_dumortier.simplemusicplayer.thememanager.ManageDisplayView.java
fr.julien_dumortier.simplemusicplayer.uiprompt.PromptActionByType.java
fr.julien_dumortier.simplemusicplayer.uiprompt.PromptActionPlaylist.java
fr.julien_dumortier.simplemusicplayer.uiprompt.PromptConfirmAddInNew.java
fr.julien_dumortier.simplemusicplayer.uiprompt.PromptConfirmDeletePlaylist.java
fr.julien_dumortier.simplemusicplayer.uiprompt.PromptConfirmExit.java
fr.julien_dumortier.simplemusicplayer.uiprompt.PromptConfirmReplacePlaylist.java
fr.julien_dumortier.simplemusicplayer.uiprompt.PromptDefineCoverAlbum.java
fr.julien_dumortier.simplemusicplayer.uiprompt.PromptGetTextName.java
fr.julien_dumortier.simplemusicplayer.uiprompt.PromptMoveTrack.java
fr.julien_dumortier.simplemusicplayer.uiprompt.PromptPlaylistName.java
fr.julien_dumortier.simplemusicplayer.uiprompt.PromptShowText.java
fr.julien_dumortier.simplemusicplayer.uiprompt.PromptSuppressConfirm.java
fr.julien_dumortier.simplemusicplayer.widget.AudioPlayerApplication.java
fr.julien_dumortier.simplemusicplayer.widget.AudioPlayerWidgetProvider.java
fr.julien_dumortier.simplemusicplayer.widget.AudioPlayerWidgetViewController.java
fr.julien_dumortier.simplemusicplayer.widget.WidgetView.java