私はSMS処理、Javaベースのソフトウェアで、メッセージを受信するたびにビープ音/警告音を鳴らしたい。Javaを見てみた。 .soundライブラリと何も見つかりませんでした。アプレットを使用してサウンドを再生する方法がJava application!に定義済みのサウンドがありますか?Javaアプリケーションで呼び出すことができるライブラリ?どんなポインタでも歓迎されます!
ビープ音またはクイックアラートのみが必要な場合
Toolkit.getDefaultToolkit().beep();
外部サウンドファイルなしでbeep()よりも退屈なものを探している場合は、独自のサウンドを生成できます。
import javax.sound.sampled.*;
public class SoundUtils {
public static float SAMPLE_RATE = 8000f;
public static void tone(int hz, int msecs)
throws LineUnavailableException
{
tone(hz, msecs, 1.0);
}
public static void tone(int hz, int msecs, double vol)
throws LineUnavailableException
{
byte[] buf = new byte[1];
AudioFormat af =
new AudioFormat(
SAMPLE_RATE, // sampleRate
8, // sampleSizeInBits
1, // channels
true, // signed
false); // bigEndian
SourceDataLine sdl = AudioSystem.getSourceDataLine(af);
sdl.open(af);
sdl.start();
for (int i=0; i < msecs*8; i++) {
double angle = i / (SAMPLE_RATE / hz) * 2.0 * Math.PI;
buf[0] = (byte)(Math.sin(angle) * 127.0 * vol);
sdl.write(buf,0,1);
}
sdl.drain();
sdl.stop();
sdl.close();
}
public static void main(String[] args) throws Exception {
SoundUtils.tone(1000,100);
Thread.sleep(1000);
SoundUtils.tone(100,1000);
Thread.sleep(1000);
SoundUtils.tone(5000,100);
Thread.sleep(1000);
SoundUtils.tone(400,500);
Thread.sleep(1000);
SoundUtils.tone(400,500, 0.2);
}
}
ここでより多くの音の実験: 特別な効果音を生成
here のように、Toolkitクラス内のビープメソッドを見ることができます。
アプレットのルートは問題ないはずです(非常に簡単です)。アプレットインスタンスの作成を回避するには、静的な newAudioClip
メソッドを使用し、作成されたAudioClip
でplay()
を呼び出します。
URL url = getClass().getResource("/foo/bar/sound.wav");
AudioClip clip = Applet.newAudioClip(url);
clip.play();
ここで、sound.wav
ファイルは、作成したfoo/bar
パッケージのjar
ファイルにバンドルされています。完全に機能するクラス(wav
ファイルがsounds
パッケージにある)は、次のようになります。
package sounds;
import Java.applet.Applet;
import Java.applet.AudioClip;
public class PlaySound {
public void PlayBeep() {
AudioClip clip = Applet.newAudioClip(getClass().getResource("/sounds/beep3.wav"));
clip.play();
}
}
ここでは、jar
を抽出すると、wav
ファイルがjar
の最初のフォルダー(sounds
)にあることがわかるので、パスは/sounds/
として指定されます。
サウンドパッケージを使用して任意のサウンドファイルを再生する場合は、javax.sound.sampled
パッケージ。サウンドファイルを再生するコードは次のとおりです。
private void playSound(File f){ Runnable r = new Runnable(){ private File f; public void run() { playSoundInternal(this.f); } public Runnable setFile(File f){ this.f = f; これを返す; } } .setFile(f); new Thread(r).start(); } private void playSoundInternal(File f){ try { AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(f); try { Clip clip = AudioSystem.getClip(); clip.open(audioInputStream); try { clip.start(); try { Thread.sleep(100); } catch(InterruptedException e){ e.printStackTrace(); } clip.drain(); }最後に{ clip.close(); } } catch(LineUnavailableException e){ e。 printStackTrace(); }最後に{ audioInputStream.close(); } } catch(UnsupportedAudioFileException e){ e.printStackTrace( ); } catch(FileNotFoundException e){ e.printStackTrace(); } catch(IOException e){ e.printStackTrace(); } }