我现在可以在我的Java Swing应用程序中使用JavaSound和来自Java play WAV sound file的代码来播放声音。我现在想做的是:
播放声音;声音结束后,我想播放另一个声音(这是动作)。 所以基本上,步骤:
我尝试了几个选项,延迟,线程,但无法弄明白。
答案 0 :(得分:4)
在您的示例中,正在使用DataLine
对象播放声音。 DataLine
对象有一个方法调用addLineListener
,它接受一个实现LineListener
接口的对象,并公开您可以使用的start
和stop
等事件执行你的动作或播放另一种声音。
您需要做的是:
LineListener
界面addLineListener
调用this
方法订阅更新活动
参数update
接口LineListener
方法
update
方法测试活动并提供您需要的操作 Here's a link演示了在LineListener
方法中处理update
个事件。
答案 1 :(得分:2)
作为Abbas良好解决方案的替代方案,我建议您定期检查用于播放该文件的线程是否存活。
查看由您提供的教程,主程序创建线程类的新实例,并使用start()
方法启动线程。因此,您可以检查线程是否仍然存在。当线程死了,你可以做你想要的。例如:
AePlayWave apw = new AePlayWave("test.wav");
apw.start();
try{
boolean alive = apw.isAlive();
while(alive){
//check periodically if the thread is alive
alive = apw.isAlive();
Thread.currentThread().sleep(500);
}
}
catch(InterruptedException e){
System.out.println("Interrupted");
e.printStackTrace();
}
//do other action..
当apw
线程死亡(然后布尔alive
为假)并且程序从while
循环退出时,您可以执行所需的操作。