Nếu bạn đang chạy ứng dụng lớn hơn, câu trả lời này có thể không áp dụng. Nhưng đối với một thử nghiệm đơn giản chỉ với đoạn mã đó, số này có thể trợ giúp:
Clip.loop() bắt đầu chuỗi riêng của nó, nhưng chuỗi đó sẽ không giữ JVM hoạt động. Vì vậy, để làm cho nó hoạt động, hãy chắc chắn rằng clip không phải là chủ đề duy nhất.
Nếu tôi bỏ qua Thread.sleep (..) từ đoạn mã này, tôi sẽ gặp vấn đề tương tự như bạn;
import java.io.File;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
public class Snippet {
public static void main(String[] args) throws Exception {
AudioInputStream inputStream = AudioSystem.getAudioInputStream(new File("notify.wav"));
Clip clip = AudioSystem.getClip();
clip.open(inputStream);
clip.loop(Clip.LOOP_CONTINUOUSLY);
Thread.sleep(10000); // looping as long as this thread is alive
}
}
Bạn đã thử thực hiện vòng lặp() trước khi mở() chưa? Tôi đã không thử nó nhưng nó có thể làm việc. –
Tôi chỉ thử nó ở đây và nó có vẻ làm việc ... bạn có bắt gặp bất kỳ ngoại lệ nào trong khối thử nên được vượt qua mã này không? – Timst
Xin chào, tôi đã thử điều này và nó hoạt động. Bạn có ngoại lệ som sau vòng đầu tiên? – hudi