我正在开发一个闹钟程序,播放一个音频剪辑作为警报。我可以成功地播放音频剪辑,并终止不活动的警报。但是,当我试图终止当前正在播放的警报时,音频会继续播放。我尝试过的解决方案是将剪辑设置为null,clip.stop();以及
public void stopSound(Clip clip){
clip.stop();
clip.flush();
clip.close();
}是否有办法通过剪辑以任意百分比结束剪辑?
发布于 2022-09-21 13:09:58
这对我有用。它在玩了5秒后就停止了。
import javax.sound.sampled.*;
import java.io.File;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
public class Main {
public static void main(String[] args) {
playMusic("<Type your path to music here>");
}
static void playMusic(String musicLocation) {
new Thread(() -> {
try {
File musicPath = new File(musicLocation);
if (musicPath.exists()) {
AudioInputStream audioInput = AudioSystem.getAudioInputStream(musicPath);
Clip clip = AudioSystem.getClip();
clip.open(audioInput);
clip.start();
TimeUnit.SECONDS.sleep(5);
clip.stop();
} else {
System.out.println("Can't find file");
}
} catch (IOException | UnsupportedAudioFileException | LineUnavailableException | InterruptedException e) {
throw new RuntimeException(e);
}
}).start();
}
}https://stackoverflow.com/questions/73789405
复制相似问题