我现在能够在我的JavaSound应用程序中播放声音,使用JavaSound和来自Java播放WAV声音文件的代码。我现在想做的是:
播放一个声音;在声音结束后,我想再放一个声音(这是动作)。因此,基本上,分步骤:
我尝试了几种选择,延迟,线程,但都搞不清楚。
发布于 2011-12-31 10:17:45
作为阿巴斯的好解决方案的替代方案,我可以建议定期检查用于播放文件的线程是否是活动的。
查看您提供的教程,主程序创建一个线程类的新实例,并使用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为false)并且程序退出while循环时,您可以执行所需的操作。
发布于 2011-12-31 01:44:28
在您的示例中,DataLine对象被用来播放声音。DataLine对象有一个方法调用addLineListener,它接受一个实现LineListener接口的对象,并公开可以用来执行操作或播放另一个声音的事件,如start和stop。
你需要做的是:
LineListener接口addLineListener参数调用this方法来订阅更新事件update接口的LineListener方法update方法中测试事件并提供所需的操作这里有一个链接,它演示如何在update方法中处理LineListener事件。
https://stackoverflow.com/questions/8685496
复制相似问题