JLayer는 연속 재생을 지원하지 않으므로 이전 플레이어가 끝난 후 반복적으로 새로운 플레이어를 시작하려면 루프를 사용해야합니다. 예를 들어 : 루프
try { do { FileInputStream buff = new FileInputStream(Okno.filename); prehravac = new AdvancedPlayer(buff); prehravac .play(); }while(loop); } catch(Exception ioe) { //TODO error handling }
당신은 당신이 한 번 또는 반복적으로 바로 재생하려는 경우에 따라 다른 방법으로 true 또는 false로 설정 할 수있는 부울 것.
나중에 스레드에 액세스하려면 최소한이를 변수로 선언해야합니다. 스레드를 확장하는 별도의 클래스를 작성하는 것이 더 좋습니다. 그렇게하면 나중에 호출 할 수있는 스레드에 메서드를 추가 할 수 있습니다. 당신은 단순히 스레드를 만들 수 있습니다 이것으로
import java.io.*;
import javazoom.jl.player.*;
public class MyAudioPlayer extends Thread {
private String fileLocation;
private boolean loop;
private Player prehravac;
public MyAudioPlayer(String fileLocation, boolean loop) {
this.fileLocation = fileLocation;
this.loop = loop;
}
public void run() {
try {
do {
FileInputStream buff = new FileInputStream(fileLocation);
prehravac = new Player(buff);
prehravac.play();
} while (loop);
} catch (Exception ioe) {
// TODO error handling
}
}
public void close(){
loop = false;
prehravac.close();
this.interrupt();
}
}
때이 같은 원하는 목적지 : 코드에 대한
는 그런 일을 보일 수 있습니다
private MyAudioPlayer thePlayer;
[... some class code here...]
public void yourMethod(){
thePlayer = new MyAudioPlayer("path of the music file", true);
thePlayer.start();
}
을 당신이 얻으려면 어떤 시점에서 제거하십시오 thePlayer.close();
thePlayer는 다시 사용할 수 있도록 인스턴스 변수 여야합니다. 메소드 내에서만 선언하는 경우 메소드가 완료된 후에 사라집니다.
희망이 도움이됩니다.
죄송합니다. 감사드립니다. 정말 많은 도움을주었습니다 :)) –