我有从.wav文件播放声音的代码,但我无法停止歌曲,甚至无法退出程序,直到它结束。因为这是一首5分钟的歌,所以这是一个问题。这是我如何播放wav的代码:
public class EasySound{
private SourceDataLine line = null;
private byte[] audioBytes;
private int numBytes;
public EasySound(String fileName){
File soundFile = new File(fileName);
AudioInputStream audioInputStream = null;
try {
audioInputStream = AudioSystem.getAudioInputStream(soundFile);
} catch (Exception ex) {
System.out.println("*** Cannot find " + fileName + " ***");
System.exit(1);
}
AudioFormat audioFormat = audioInputStream.getFormat();
DataLine.Info info = new DataLine.Info(SourceDataLine.class,
audioFormat);
try {
line = (SourceDataLine)AudioSystem.getLine(info);
line.open(audioFormat);
} catch (LineUnavailableException ex) {
System.out.println("*** Audio line unavailable ***");
System.exit(1);
}
line.start();
audioBytes = new byte[(int)soundFile.length()];
try {
numBytes = audioInputStream.read(audioBytes, 0, audioBytes.length);
} catch (IOException ex) {
System.out.println("*** Cannot read " + fileName + " ***");
System.exit(1);
}
}
public void play() {
line.write(audioBytes, 0, numBytes);
}
}有没有更好的方法来做到这一点,或者有一种方法可以让我在中途停止这首歌?
提前感谢!
发布于 2012-09-20 00:49:27
在单独的线程中播放音频文件。将UI放在可以访问"play“线程的不同线程中。当用户想要暂停时,您可以简单地暂停该线程。但是,如果您使用的任何库都没有这样的功能,我会感到惊讶……
https://stackoverflow.com/questions/12499230
复制相似问题