Package org.matt1.climediarenderer.player

Source Code of org.matt1.climediarenderer.player.MusicPlayerDeamonPlayer

package org.matt1.climediarenderer.player;

import java.net.MalformedURLException;
import java.net.URL;
import java.net.UnknownHostException;

import org.a0z.mpd.MPD;
import org.a0z.mpd.exception.MPDClientException;
import org.a0z.mpd.exception.MPDServerException;
import org.matt1.climediarenderer.utils.PropertyHelper;

/**
* BasicPlayer that uses the Music Player Daemon player
*
* @author Matt
*
*/
public class MusicPlayerDeamonPlayer implements BasicPlayer {

  /** MPD client instance */
  private MPD mpdPlayer;
 
 
  public static void main(String[] args) throws MPDServerException, MPDClientException, MalformedURLException, PlayerException, InterruptedException, UnknownHostException {
   
    MusicPlayerDeamonPlayer player = new MusicPlayerDeamonPlayer("http://monkeydrive:50599/disk/DLNA-PNMP3-OP01-FLAGS01700000/O0$1$8I450314.mp3");
    player.play();
    Thread.sleep(10000);
    player.stop();
    player.cleanup();
   
  }
 
  public MusicPlayerDeamonPlayer(String path) throws
    MPDServerException, MPDClientException, MalformedURLException, UnknownHostException {
    getInstance().getPlaylist().clear();
    getInstance().getPlaylist().add(new URL(path));
   
  }
 
  /**
   * Gets a new connection and a new player instance from MPD
   * @return
   * @throws UnknownHostException
   * @throws MPDServerException
   */
  private MPD getInstance() throws MPDServerException, UnknownHostException {
    if (mpdPlayer == null) {
      try {
        mpdPlayer = new MPD(PropertyHelper.getInstance().getMPDHost(), PropertyHelper.getInstance().getMPDPort());
      } catch (Exception e) {
        throw new MPDServerException("Unabled to load MPD config from settings: " + e.getMessage(), e);
      }
    }
    return mpdPlayer;
  }
 
  @Override
  public void play() throws PlayerException {
    try {
      getInstance().play();
    } catch (Exception e) {
      throw new PlayerException(e.getMessage());
    }

  }

  @Override
  public void stop() throws PlayerException {
    try {
      getInstance().stop();
    } catch (Exception e) {
      throw new PlayerException(e.getMessage());
    }

  }

  @Override
  public void pause() throws PlayerException {
    try {
      getInstance().pause();
    } catch (Exception e) {
      throw new PlayerException(e.getMessage());
    }

  }

  @Override
  public void skip(long seconds) throws PlayerException {
   
  }

  @Override
  public long getPosition() {
    long position = 0;
    try {
      position = getInstance().getStatus().getSongPos();
    } catch (Exception e) {
      // swallow it for now
    }
   
    return position;
   
  }

  @Override
  public long getDuration() {
    long duration = 0;
    try {
      duration = getInstance().getStatus().getTotalTime();
    } catch (Exception e) {
      // swallow it for now
    }
   
    return duration;
  }

  @Override
  public float getPositionPercentage() {
    // TODO Auto-generated method stub
    return 0;
  }

  @Override
  public String getCurrentUri() {
    // TODO Auto-generated method stub
    return null;
  }

  @Override
  public void cleanup() {
    try {
      if (getInstance().isConnected()) {
        getInstance().stop();
        getInstance().disconnect();
      }
     
    } catch (Exception e) {
      // what now?
    }
     
   
   

  }

}
TOP

Related Classes of org.matt1.climediarenderer.player.MusicPlayerDeamonPlayer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.