目覚まし時計のプログラムを書いていて、目覚まし時計が鳴ったときにオーディオファイルを数回再生していました。
プログラムのアラーム側が実行されます。これで、ファイルを再生することになりました。jFileChooserを使用してファイルを選択します。javax.sound.sampled.AudioInputStream、javax.sound.sampled.AudioSystem、javax.sound.sampled.Clipを使用して、wavファイルを再生します。同様に働いています。
しかし、私は本当に1つのwavファイルを再生したいだけでなく、この目覚まし時計を複数のシステムで移動できるようにしたいので、jFileChooserを使用してアラーム音を選択することは避けたいと思います。プログラムを実行するたびにファイルを参照して選択する必要はありません。
ファイルに相対パス(たとえば、jarと同じフォルダー内)を指定してから、パス文字列を修正する方が簡単でしょうか?または、どういうわけかwavをjarファイルの一部にする方が簡単でしょうか(これは、wavファイルについてまったく心配する必要がないので私が好むものです。1つの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); }
}