アプリのバックグラウンドで 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);
}
}
}
closeApp() メソッドで musicThread.interrupt() を使用すると、何も起こらず、mp3 ファイルは引き続き再生されます。InterruptedException で catch 句を挿入しようとしましたが、InterruptedException が存在しないため、Eclipse は常に下線を引きます...
何か案が ?
編集: Javazoom Player を使用して mp3 ファイルを再生します。そして、JavaSE-1.6環境を使用しています。
ありがとう。