我最近使用Jlayer在Java中播放mp3歌曲的解决方案。但是Kaleb Brasee的这个解决方案并没有暗示你如何阻止玩家,也就是说怎么可以调用player.close()?
Kaleb的代码是:
Executor executor = Executors.newSingleThreadExecutor();
executor.execute(new Runnable() { public void run() {
/* do something */
} });
这是我在run()
中输入的代码if(player != null) player.close();
try{
player = new Player(new FileInputStream(musicD.getPath()));
player.play();
}catch(Exception e){}
问题在于,这解决了在播放音乐时保持gui活动的问题(只在另一个线程中 - 我想要的),我无法开始播放另一首歌: - (
我该怎么办?
答案 0 :(得分:0)
好吧,在调整代码后,我意识到替换当前线程可以解决问题;它允许你开始播放不同的歌曲,即使前一个还没有完成。
这是新代码:
执行人执行人; //一个班级成员
每次想要播放歌曲时,只需替换现有歌曲的主题即可 因此,无论其他歌曲的进展如何,您都可以播放另一首歌曲
executor = Executors.newSingleThreadExecutor();
executor.execute(new Runnable(){public void run(){
/ *做点什么* /
}});
答案 1 :(得分:0)
这与其他问题非常相似,你可以一次只播放一个音频帧,并检查一个标志是否应该暂停,在你的情况下停止播放。