这是我用来播放声音的代码,它可以完美满足我的需求。我只是不知道如何在我想要的时候停止播放剪辑。
public class Sound {
public Clip play(String filename) {
Clip clip = null;
try {
File file = new File(filename);
AudioInputStream audioIn = AudioSystem.getAudioInputStream(file);
clip = AudioSystem.getClip();
clip.open(audioIn);
clip.stop();
clip.start();
} catch (Exception e) {
e.printStackTrace();
}
return clip;
}
}
答案 0 :(得分:1)
如果你看一下Clip
的JavaDocs,你应该注意DataLine
中的一个继承方法是stop
停止该行。停止的行应该停止I / O活动。如果行 但是,它应该是开放和运行的,它应该保留所需的资源 恢复活动。停止的行应保留其中的任何音频数据 缓冲而不是丢弃它,以便在恢复时I / O可以 如果可能的话,继续它停止的地方。 (这不能保证 永远不会有超出当前缓冲区的不连续性 课程;如果停止状态持续太久,输入或 输出样本可能会被丢弃。)如果需要,保留的数据可以是 通过调用flush方法丢弃。音频捕获或播放时 停止,生成STOP事件。
您可能需要验证这一点,但我似乎明白start
是一种阻止方法,即一旦被调用,在Clip
完成播放之前不会返回。这需要Clip
在单独的Thread