Android Open Source - SpotifyTray-Android Mock Playlist






From Project

Back to project page SpotifyTray-Android.

License

The source code is released under:

MIT License

If you think the Android project SpotifyTray-Android 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 com.droidprojects.spotifytray.controller;
// ww  w  .  j a  v a  2 s  .c om
import java.util.ArrayList;
import java.util.Timer;
import java.util.TimerTask;

import android.os.Handler;

/**
 * Mock playlist and playlist manager
 * @author Fouad
 *
 */
public class MockPlaylist {
  
  // Playlist state info
  private int mCurrentSongIndex = 0;
  private int mNumTotalSongs = 5;
  private ArrayList<MockSong> mPlaylistSongs = new ArrayList<MockSong>(mNumTotalSongs);
  private MockSong mCurrentSong;
  
  // Timers to imitate playback
  private Timer mMockSongPlayerTimer = new Timer();
  private TimerTask mMockSongPlayerTask = new MockSongPlayerTimerTask();
  
  // References to the UI class and threads
  private MockPlaylistListener mListener; 
  private Handler mListenerHandler;

  // Listener to be implemented by the observer UI class
  public interface MockPlaylistListener{
    public void updateSongProgress(int playheadPosition);
    public void startedNextSong();
    public Handler getHandler();
  }
  
  public MockPlaylist(MockPlaylistListener listener) {
    mListener = listener;
    mListenerHandler = mListener.getHandler();
    initializePlaylistInfo();
    mCurrentSong = mPlaylistSongs.get(mCurrentSongIndex);
  }
  
  private void initializePlaylistInfo(){
    mPlaylistSongs.add(new MockSong("Adele", "Rolling in the deep", "adele.png", 30));
    mPlaylistSongs.add(new MockSong("Unknown 1", "Some random song 1", "greenday.jpg", 70));
    mPlaylistSongs.add(new MockSong("Unknown 2", "Some random song 2", "daftpunk.jpg", 150));
    mPlaylistSongs.add(new MockSong("Unknown 3", "Some random song 3", "graffiti.jpg", 180));
    mPlaylistSongs.add(new MockSong("Akon", "Mr. Lonely", "akon.jpg", 200));
  }
  
  public void playNextSong(){
    stopCurrentSong();
    mCurrentSongIndex++;
    mCurrentSongIndex%=mNumTotalSongs;
    mCurrentSong = mPlaylistSongs.get(mCurrentSongIndex);
    playCurrentSong();
  }
  
  public void playPreviousSong(){
    stopCurrentSong();
    mCurrentSongIndex--;
    mCurrentSongIndex = (mCurrentSongIndex+mNumTotalSongs) % mNumTotalSongs;
    mCurrentSong = mPlaylistSongs.get(mCurrentSongIndex);
    playCurrentSong();
  }
  
  public void pauseCurrentSong(){
    mMockSongPlayerTask.cancel();
    mMockSongPlayerTimer.cancel();
  }
  
  public void stopCurrentSong(){
    mMockSongPlayerTask.cancel();
    mMockSongPlayerTimer.cancel();
    mCurrentSong.mCurrentPlayheadPosition=0;
  }
  
  public void playCurrentSong(){
    mMockSongPlayerTimer = new Timer();
    mMockSongPlayerTask = new MockSongPlayerTimerTask();
    
    mMockSongPlayerTimer.schedule(mMockSongPlayerTask, 0, 1000);
  }
  
  public MockSong getCurrentSongInfo(){
    return mCurrentSong;
  }
  
  private class MockSongPlayerTimerTask extends TimerTask{
    @Override
    public void run() {
      if (mCurrentSong.mCurrentPlayheadPosition < mCurrentSong.mSongDuration){
        mCurrentSong.mCurrentPlayheadPosition++;
        mListener.updateSongProgress(mCurrentSong.mCurrentPlayheadPosition);
      }else{
        playNextSong();
        mListenerHandler.post(new Runnable() {
          @Override
          public void run() {
            mListener.startedNextSong();
          }
        });
      }
    }
  }
}




Java Source Code List

com.droidprojects.spotifytray.MainActivity.java
com.droidprojects.spotifytray.PlayerService.java
com.droidprojects.spotifytray.Utils.java
com.droidprojects.spotifytray.controller.MockPlaylist.java
com.droidprojects.spotifytray.controller.MockSong.java