我在中断在应用程序后台播放 mp3 文件的线程时遇到了一些问题。我会循环播放文件并在应用程序关闭时停止它。这是我的主要课程:
public class Main {
public static String musicPath = "/loop.mp3";
public class RunnableMusic implements Runnable{
public void run(){
System.out.println("Listen... " + musicPath.replace("/", "").replace(".mp3", "").replace(".wav", ""));
while(!musicThread.isInterrupted()){
BackgroundMusic.listen(musicPath);
}
}
}
public Thread musicThread = new Thread(new RunnableMusic());
public static void main(String[] args){
musicThread.start();
}
public static closeApp(){
}
}
这是我的背景音乐课:
public class BackgroundMusic{
public static void listen(String music){
InputStream file = BackgroundMusic.class.getResourceAsStream(music);
try {
InputStream bufferedIn = new BufferedInputStream(file);
Player playMP3 = new Player(bufferedIn);
playMP3.play();
playMP3.close();
} catch (Exception e) {
System.out.println("Couldn't play music : " + e);
}
}
}
当我在 closeApp() 方法中使用 musicThread.interrupt() 时,没有任何反应,并且仍然播放 mp3 文件。我试图用 InterruptedException 插入 catch 子句,但 Eclipse 总是强调它,因为 InterruptedException 不存在......
任何想法 ?
编辑:我使用 Javazoom Player 播放 mp3 文件。我使用 JavaSE-1.6 环境。
谢谢。