我正在使用以下代码使用java sound API播放声音文件。
Clip clip = AudioSystem.getClip();
AudioInputStream inputStream = AudioSystem.getAudioInputStream(stream);
clip.open(inputStream);
clip.start();
对Clip.start()方法的方法调用将立即返回,并且系统在后台线程中播放声音文件。我希望我的方法暂停直到播放完成。
有什么好办法吗?
编辑:对于所有对我最终解决方案感兴趣的人,根据Uri的回答,我使用了以下代码:
private final BlockingQueue queue = new ArrayBlockingQueue(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 );
}