package org.limewire.player.api;
import java.io.File;
import java.io.InputStream;
import java.net.URL;
import javax.media.GainControl;
/**
* This interface defines the functionality of an AudioPlayer
* component.
*/
public interface AudioPlayer {
/**
* Loads a song wrapped in a AudioSource object.
*/
public void loadSong(AudioSource source);
/**
* Loads a song from a File.
*/
public void loadSong(File source);
/**
* Loads a song from an InputStream.
*/
public void loadSong(InputStream source);
/**
* Loads a song from a URL.
*/
public void loadSong(URL source);
/**
* Begins playing the loaded song.
*/
public void playSong();
/**
* Pauses the current song.
*/
public void pause();
/**
* Unpauses the current song.
*/
public void unpause();
/**
* Stops the current song from playing (essentially returns the song to the
* loaded state).
*/
public void stop();
/**
* If playing a file, searches to a specified location in the song If
* playing a stream, has no effect.
*
* @param value non-negative frame to skip to
*/
public long seekLocation(long value);
/**
* Returns the current state of the player.
*
* @return the state of the player -- one of STATUS_PLAYING, STATUS_PAUSED,
* STATUS_STOPPED, STATUS_STOPPPED, STATUS_OPENED, STATUS_SEEKING,
* STATUS_UNKNOWN
*/
public PlayerState getStatus();
/**
* Sets Volume(Gain) value Linear scale 0.0 <--> 1.0.
*/
public void setVolume(float value);
/**
* Returns the GainController used by this Player.
*/
public GainControl getGainControl();
/**
* Adds a listener to the list of player listeners.
*/
public void addAudioPlayerListener(AudioPlayerListener listener);
/**
* Removes a listener from the list of player listeners.
*/
public void removeAudioPlayerListener(AudioPlayerListener listener);
/**
* @return true if the file is currently playing
*/
public boolean isPlaying(File file);
/**
* @return true if the file is currently paused
*/
public boolean isPaused(File file);
/**
* @return The current song playing in the player. This may return null.
*/
AudioSource getCurrentSong();
}