我正在使用SMS处理,基于Java的软件,并希望在收到消息时发出哔哔/警报声.我试着查看java.sound库,找不到任何东西.我不知道在Java应用程序中播放声音的小程序是否合适!在我们可以在应用程序中调用的任何Java库中是否有任何预定义的声音?任何指针将不胜感激!
Sea*_*ean 48
如果您只是想要发出哔哔声或快速警报,请尝试
Toolkit.getDefaultToolkit().beep();
Run Code Online (Sandbox Code Playgroud)
Rea*_*wTo 32
如果您在没有外部声音文件的情况下寻找比哔哔声()更无聊的东西,您可以生成自己的声音.
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);
}
}
Run Code Online (Sandbox Code Playgroud)
这里有更多声音实验: 产生特殊的声音效果
小程序路由应该没问题(并且非常简单)。为避免创建 Applet 实例,您可以使用静态newAudioClip方法,然后调用play()已AudioClip创建的。
URL url = getClass().getResource("/foo/bar/sound.wav");
AudioClip clip = Applet.newAudioClip(url);
clip.play();
Run Code Online (Sandbox Code Playgroud)
在这里,sound.wav文件捆绑在您创建jar的foo/bar包中的文件中。一个功能齐全的类(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();
}
}
Run Code Online (Sandbox Code Playgroud)
在这里,给定该路径的/sounds/,因为当你解压jar,你会看到该wav文件位于在第一个文件夹jar,这是sounds。
| 归档时间: |
|
| 查看次数: |
61383 次 |
| 最近记录: |