Tenho a seguinte classe:
package br.paulo.game.som;
import java.io.BufferedInputStream;
import java.io.InputStream;
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;
import javax.swing.JOptionPane;
public class SomMenu {
public void play(final InputStream somPath, final boolean restart) {
try {
BufferedInputStream bufferedInput = new BufferedInputStream(somPath);
AudioInputStream ais = AudioSystem.getAudioInputStream(bufferedInput);
AudioFormat af = ais.getFormat();
DataLine.Info dataLineInfo = new DataLine.Info(Clip.class, ais.getFormat(),
((int)ais.getFrameLength() * af.getFrameSize()));
Clip clip = (Clip)AudioSystem.getLine(dataLineInfo);
clip.addLineListener(new LineListener() {
public void update(LineEvent e) {
if(e.getType() == LineEvent.Type.STOP) {
e.getLine().close();
}
}
});
clip.open(ais);
if(restart) {
clip.loop(clip.LOOP_CONTINUOUSLY);
} else {
clip.loop(0);
}
} catch(Exception e) {
e.printStackTrace();
JOptionPane.showMessageDialog(null, "Erro na reprodução do audio:\n"
+ e.getMessage(), "Zumbie",JOptionPane.ERROR_MESSAGE);
}
}
}
O meu problema é de como dar um stop na musica, alguém sabe?