我有一些問題需要中斷在應用程序背景中播放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(){
}
}
這是我BackgroundMusic類:
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);
}
}
}
當我使用musicThread.interrupt()在closeApp()方法,沒有任何反應,和MP3文件仍然被播放。我試圖插入與InterruptedException的catch子句,但Eclipse始終強調它爲InterruptedException不存在...
任何想法?
編輯:我用Javazoom播放器播放MP3文件。我使用JavaSE-1.6環境。
謝謝。
玩家應該有控件來控制媒體。因此,控制媒體的對象應該是共享資源。這樣你就可以隨心所欲地控制媒體。然後,當您關閉應用程序時,您停止播放器。此外,保持線程活着的條件應該重新設計。 – Sebastian