package com.arthurbergmz.assistant.misc;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import javazoom.jl.decoder.JavaLayerException;
import javazoom.jl.player.FactoryRegistry;
import javazoom.jl.player.advanced.AdvancedPlayer;
import javazoom.jl.player.advanced.PlaybackEvent;
import javazoom.jl.player.advanced.PlaybackListener;
public class SoundPlayer extends PlaybackListener implements Runnable {
private String filePath;
private AdvancedPlayer player;
private Thread playerThread;
private Runnable onStart;
private Runnable onEnd;
public SoundPlayer(String filePath){
this.filePath = filePath;
}
public void play(){
this.play(null, null);
}
public void play(Runnable onStart, Runnable onEnd){
try {
this.onStart = onStart;
this.onEnd = onEnd;
this.player = new AdvancedPlayer(new URL(this.filePath).openStream(), FactoryRegistry.systemRegistry().createAudioDevice());
this.player.setPlayBackListener(this);
this.playerThread = new Thread(this);
this.playerThread.start();
}catch (MalformedURLException e){
e.printStackTrace();
}catch (JavaLayerException e){
e.printStackTrace();
}catch (IOException e){
e.printStackTrace();
}
}
@Override
public void run(){
try{
this.player.play();
}catch (JavaLayerException e){
e.printStackTrace();
}
}
@Override
public void playbackStarted(PlaybackEvent e){
if(this.onStart != null) this.onStart.run();
}
@Override
public void playbackFinished(PlaybackEvent e){
if(this.onEnd != null) this.onEnd.run();
}
}