我正在寫一個鬧鐘程序,當鬧鐘時間到時,它會多次播放一個音頻文件。在java中嵌入wav?
該程序的報警一側已完成。現在我正在播放該文件。我使用jFileChooser來選擇文件。 javax.sound.sampled.AudioInputStream,javax.sound.sampled.AudioSystem和javax.sound.sampled.Clip播放我的wav文件。工作也是如此。
但我真的只想播放一個wav文件,我也希望能夠在多個系統上移動鬧鐘,所以我想避免使用jFileChooser來選擇我的鬧鐘鈴聲。每次運行程序時,我都不想瀏覽和選擇文件。
給文件一個相對路徑(例如在與jar相同的文件夾中),然後修復路徑字符串會更容易嗎? 或者它會讓wav成爲jar文件的一部分更容易(這是我更喜歡的,因爲那樣我就不必擔心wav文件了,它只是一個獨立運行的jar文件)一個鬧鐘,一個字節數組,也許?)
在此先感謝! 對不起,這太愚蠢了。我是新手!
這是我的AudioInputStream代碼。
public void getaudPath() {
try {
JFileChooser chooser;
String choosertitle=null;
chooser = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter(
"WAV only", "wav");
chooser.setFileFilter(filter);
chooser.setCurrentDirectory(new java.io.File("."));
chooser.setDialogTitle(choosertitle);
chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
if (chooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
apath = (chooser.getSelectedFile()).toString();
File soundFile = new File(apath);
AudioInputStream audioIn = AudioSystem.getAudioInputStream(soundFile);
URL url = this.getClass().getClassLoader().getResource(apath);
clip = AudioSystem.getClip();
clip.open(audioIn);
JOptionPane.showMessageDialog(this,"Got file, A-okay!");
} else {
apath = null;
}} catch (Exception e) {JOptionPane.showMessageDialog(this,"Error in getting sound file:=> "+e); }
}
文件音效檔=新的文件(apath); AudioInputStream audioIn = AudioSystem.getAudioInputStream(soundFile); URL url = this.getClass()。getClassLoader()。的getResource(apath); clip = AudioSystem.getClip(); clip.open(audioIn); JOptionPane.showMessageDialog(this,「Got file,A-okay!」); 像這樣? –
1)請不要在評論中放置代碼。將其編輯到問題中,使用代碼格式,並在評論中通知我該問題已被編輯。 2)'File'對於'getResource(String)'完全沒有用處。如果您感到困惑,則需要相對於類路徑(前導'/')或類的包(不包含前導'/')的路徑。 –
1)真誠的道歉! 2)是的,但FileInputStream需要File對象。 –