我正在尝试在按钮按下或从列表中选择时播放 mp3 文件(我已成功管理)。但是,我似乎无法停止在同一个按钮按下时多次播放歌曲。
我想做的是在新线程中播放歌曲,禁用再次播放歌曲,直到线程关闭,然后再次允许播放。
我的代码如下:
public class SoundFactory {
private Player player;
private static boolean running = false;
private String getFile(String name) {
String f = "sound" + File.separator + name + ".mp3";
return f;
}
public void playMP3(String name) {
if (!running) {
running = true;
try {
FileInputStream fis = new FileInputStream(getFile(name));
BufferedInputStream bis = new BufferedInputStream(fis);
player = new Player(bis);
} catch (Exception e) {
System.out.println("Problem playing file " + name);
System.out.println(e);
}
// run in new thread to play in background
new Thread() {
public void run() {
try {
player.play();
} catch (Exception e) {
System.out.println(e);
}
}
}.start();
//running = false;
}
}
public void close() {
if (player != null) player.close();
}
}
该文件通过以下方式播放:
SoundFactory sf = new SoundFactory();
sf.playMp3("song name");
在 JButton 点击
我是线程新手,所以如果这有一个明显的解决方案,我提前道歉!