package fr.devoxx.sentimental.infra.audio;
import java.io.File;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.LineEvent;
import javax.sound.sampled.LineListener;
public class SamplePlayer {
public void play(File file) {
try {
AudioInputStream stream;
AudioFormat format;
DataLine.Info info;
final Clip clip;
stream = AudioSystem.getAudioInputStream(file);
format = stream.getFormat();
info = new DataLine.Info(Clip.class, format);
clip = (Clip) AudioSystem.getLine(info);
clip.addLineListener(new LineListener() {
public void update(LineEvent event) {
if (event.getType() == LineEvent.Type.STOP)
clip.close();
}
});
clip.open(stream);
clip.start();
} catch (Exception e) {
throw new RuntimeException(e.getClass().getSimpleName() + " " + e.getMessage());
}
}
}