У меня есть некоторые проблемы, чтобы прервать поток, который воспроизводит 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);
}
}
}
Когда я использую musicThread.interrupt() в closeApp() метод, ничего не происходит, и mp3-файл еще играть. Я попытался вставить предложение catch с InterruptedException, но Eclipse всегда подчеркивает его как InterruptedException не существует ...
Любая идея?
EDIT: Я использую Javazoom Player для воспроизведения mp3-файлов. И я использую среду JavaSE-1.6.
Спасибо.
Игрок должен иметь элементы управления, чтобы управлять носителями. Таким образом, объект, который управляет носителями, должен быть общим ресурсом. Таким образом, вы можете управлять медиа по своему усмотрению. Затем, когда вы закрываете приложение, вы останавливаете игрока. Кроме того, должно быть переработано условие, обеспечивающее сохранение живого потока. – Sebastian