更新:
音频没有完全播放,因为调用它的main()结束了!如何确保文件在main()关闭之前播放?
我是编程新手并了解基础知识。我只是为了一个爱好而学习JAVA。没有正规的Java教育。
当我运行下面调用此例程的java类时,没有播放音频。当我处于调试模式时,在例程中的某个位置休息,我恢复调试器并且存储在字节数组中的波形文件将播放。
我没有编程到另一个调用它的类的线程。字节数组波形文件由另一个类构成并发送到此例程。
我认为问题是由创建wave文件的类无法及时完成调用playByteWaveAudio引起的。
此例程是否需要等待字节数组完成?我该怎么做才能确保字节数组能够播放?
这是java中的代码,它给我一个问题:
public class PlayByteWaveAudio {
public PlayByteWaveAudio() {
System.err.println("Need Byte Array with wave file data! ");
}
public PlayByteWaveAudio(byte[] playWave) {
InputStream byteArray = new ByteArrayInputStream(playWave);
try {
AudioInputStream ais = AudioSystem.getAudioInputStream(byteArray);
Clip clip = AudioSystem.getClip();
clip.open(ais);
//if I have a breakpoint in this area, during DEBUG, i can continue
//and the wave byte array will play just fine.
//During regular run(without debug), there is no sound.
clip.start();
clip.flush();
} catch (IOException | LineUnavailableException | UnsupportedAudioFileException e) {
System.out.println(e);
}
}
}