我正面临一个奇怪的编程问题。它已经耗尽了我,但没有找到解决方案!
我的程序主要依赖于从外部硬件触发的事件(Java Listener),用于从该硬件接收音频消息。在eventHandler中,我执行以下操作
问题是:无论何时第一次调用方法“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();}
}
答案 0 :(得分:0)
您可能正在使用活动主题播放音乐。尝试在新线程中调用Player.play()。
new Thread(new Runnable(){public void run(){Player.play()}})。start();
这是一个例子:
static String url = "http://www.stackoverload.com";
public static void threadTest() {
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
try {
URL url2 = new URL(url);
url2.openStream();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).run();