我的朋友让我创建一个应用程序,他可以与游戏Plague Inc一起使用,他希望在应用程序中播放游戏的配乐。在进行网络研究后,我已经尝试了所有方法,但没有任何效果。是否可以从 java 包(如图像)调用音轨,而不是指定文件夹目录和 URL?我在网上找到了一些有希望的信息,但是当我在尝试后运行代码时,AudioInputStream
不断给我错误。我尝试使用子句例外,但这与 main 方法严重冲突,应用程序甚至无法运行。我尝试将编码放在构造函数、新方法甚至主方法本身中,但当我运行应用程序时,所有这些都会抛出错误(我什至不知道把它放在哪里以便它可以工作)。请帮忙,因为这越来越令人沮丧。
我的软件包称为声音,文件称为瘟疫.wav虽然游戏是安卓游戏,但我的应用程序在Windows PC上运行
。这是我到目前为止的编码:
File sound = new File("/Sound/plague.wav");
AudioInputStream audioIn = AudioSystem.getAudioInputStream(sound);
Clip clip = AudioSystem.getClip();
clip.open(audioIn);
clip.loop(Clip.LOOP_CONTINUOUSLY);
} catch (LineUnavailableException ex) {
Logger.getLogger(knownDiseases.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(knownDiseases.class.getName()).log(Level.SEVERE, null, ex);
} catch (UnsupportedAudioFileException ex) {
Logger.getLogger(knownDiseases.class.getName()).log(Level.SEVERE, null, ex);
}
您可以将其作为资源流获取检查这个:
InputStream input = getClass().getResourceAsStream("/Sound/plague.wav");
AudioInputStream audioIn = AudioSystem.getAudioInputStream(input);
Clip clip = AudioSystem.getClip();
clip.open(audioIn);
clip.loop(Clip.LOOP_CONTINUOUSLY);
} catch (LineUnavailableException ex) {
Logger.getLogger(knownDiseases.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(knownDiseases.class.getName()).log(Level.SEVERE, null, ex);
} catch (UnsupportedAudioFileException ex) {
Logger.getLogger(knownDiseases.class.getName()).log(Level.SEVERE, null, ex);
}
下面是一个示例类:
import java.io.IOException;
import java.io.InputStream;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;
public class Snippet {
public static void main(String[] args) throws Exception {
try {
InputStream input = Snippet.class.getResource("/Sound/sound.wav")
.openStream();
AudioInputStream audioIn = AudioSystem.getAudioInputStream(input);
Clip clip = AudioSystem.getClip();
clip.open(audioIn);
clip.loop(Clip.LOOP_CONTINUOUSLY);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
// A GUI element to prevent the Clip's daemon Thread
// from terminating at the end of the main()
JOptionPane.showMessageDialog(null, "Close to exit!");
}
});
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}