我面临一个奇怪的编程问题。它让我筋疲力尽,但没有找到解决方案!
我的程序主要依赖于从外部硬件触发的事件(Java 侦听器),用于接收来自该硬件的音频消息。在 eventHandler 中,我执行以下操作
- 将接收到的消息传递给另一个返回数据的类的静态方法“解码”
- 然后我打开 FileOutputStream,将这些数据“音频”写入文件,然后关闭 FileOutputStream。
- 我从另一个类中调用静态方法“play”来播放音频文件。
问题是:每当第一次调用“Play”方法时,它都会正确执行,但会导致事件停止引发并且程序终止但没有异常。当我注释掉播放方法时,一切都变好了!
您对导致程序终止的方法有一些想法吗?
public void messageReceived(int to,Message message)
{
speexAudioMsg msg = (speexAudioMsg)message;
try{
byte[] output = jspeexDecoder.decode(msg.get_frame());
os = new FileOutputStream(file);
os.write(output);
os.close();
Player.play();
}
catch (IOException ex) {ex.printStackTrace();}
}