最初尝试:
Toolkit.getDefaultToolkit().beep()//不是pc喇叭发声
查找java API,无果。只好祭出不轻易用的法宝:jnative
慎用慎用,此法宝一出,已无退路,什么自由移植拉跨平台啊。跟你的程序没关系了。
俺现在要调用的是windows的
kernel32.dll的Beep函数
这个函数大概是这样子的,第一个参数是频率,第二个参数持续时间
Beep(ref long dwFreq, ref long dwDuration)
编码如下
public static JNative getBeepJNative() throws NativeException { return new JNative("kernel32.dll", "Beep"); } public static void beep(JNative jn, int freq, int dwruration)throws NativeException, IllegalAccessException { jn.setRetVal(Type.VOID); jn.setParameter(0, freq);// 20--22000Hz jn.setParameter(1, dwruration); jn.invoke(); } //奏响你的都来米吧 public static void testBep2() throws NativeException, IllegalAccessException { int freqs[] = { 523, 587, 659, 698, 784, 880, 998, 1047, 998, 880, 784,698,659,587,523 }; JNative jn = getBeepJNative(); for (int i = 0, l = freqs.length; i < l; i++) { beep(jn, freqs[i], 500); } }