Conflicts: audio/AudioPlayer.java model/GameModel.java model/SongHandler.java model/gameState/MenuState.java Menu now works togheter with the game. A lot of known bugs with audio player
79 lines
1.3 KiB
Java
79 lines
1.3 KiB
Java
package audio;
|
|
|
|
import java.io.FileInputStream;
|
|
import java.io.FileNotFoundException;
|
|
import java.io.IOException;
|
|
|
|
import javazoom.jl.decoder.JavaLayerException;
|
|
import javazoom.jl.player.Player;
|
|
|
|
public class AudioPlayer{
|
|
|
|
private Player clip;
|
|
private FileInputStream fis;
|
|
private Song s;
|
|
private Thread thread;
|
|
|
|
public AudioPlayer() {
|
|
clip = null;
|
|
}
|
|
|
|
public void setClip(Song s) {
|
|
try {
|
|
if(clip!=null)
|
|
clip.close();
|
|
this.s = s;
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
public void play() {
|
|
try {
|
|
fis = new FileInputStream(s.getAudio());
|
|
clip = new Player(fis);
|
|
} catch (JavaLayerException | FileNotFoundException e1) {
|
|
e1.printStackTrace();
|
|
}
|
|
Thread thread = new Thread(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
if(clip != null){
|
|
try {
|
|
clip.play();
|
|
} catch (JavaLayerException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
}});
|
|
thread.start();
|
|
}
|
|
|
|
public void close() {
|
|
if(clip != null)
|
|
{
|
|
clip.close();
|
|
clip = null;
|
|
try {
|
|
if(fis != null)
|
|
fis.close();
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
if(thread != null && thread.isAlive())
|
|
thread.stop();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public long getProgress()
|
|
{
|
|
if(clip != null)
|
|
return clip.getPosition()*1000;
|
|
else
|
|
return 0L;
|
|
}
|
|
|
|
}
|