我正在使用以下代码使用 java 声音 API 播放声音文件。
Clip clip = AudioSystem.getClip();
AudioInputStream inputStream = AudioSystem.getAudioInputStream(stream);
clip.open(inputStream);
clip.start();
Clip.start() 方法的方法调用立即返回,系统在后台线程中播放声音文件。我希望我的方法暂停,直到播放完成。
有什么好的方法吗?
编辑:对于所有对我的最终解决方案感兴趣的人,根据 Uri 的回答,我使用了以下代码:
private final BlockingQueue<URL> queue = new ArrayBlockingQueue<URL>(1);
public void playSoundStream(InputStream stream) {
Clip clip = AudioSystem.getClip();
AudioInputStream inputStream = AudioSystem.getAudioInputStream(stream);
clip.open(inputStream);
clip.start();
LineListener listener = new LineListener() {
public void update(LineEvent event) {
if (event.getType() != Type.STOP) {
return;
}
try {
queue.take();
} catch (InterruptedException e) {
//ignore this
}
}
};
clip.addLineListener(listener );
}