我正在使用以下代碼使用java聲音API播放聲音文件。我該如何等待java聲音剪輯才能完成播放?
Clip clip = AudioSystem.getClip();
AudioInputStream inputStream = AudioSystem.getAudioInputStream(stream);
clip.open(inputStream);
clip.start();
該方法調用Clip.start()方法立即返回,系統在後臺線程中播放聲音文件。我希望我的方法暫停,直到播放完成。
有什麼好方法可以做到嗎?
編輯:對於大家感興趣的我最終解決方案的基礎上,從開放的答案,我用下面的代碼:
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);
}
這工作就像一個簡單的文本到語音應用程序,我正在對一個魅力。 – progyammer 2016-09-23 08:53:12