앱 배경에서 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 환경을 사용합니다.
감사합니다.
플레이어에는 미디어를 제어하기위한 컨트롤이 있어야합니다. 따라서 미디어를 제어하는 객체는 공유 리소스 여야합니다. 그렇게하면 원하는대로 미디어를 제어 할 수 있습니다. 그런 다음 앱을 닫으면 플레이어가 멈 춥니 다. 또한 스레드를 활성 상태로 유지하는 조건을 다시 설계해야합니다. – Sebastian