java中如何让pc喇叭发声

最初尝试:

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);
		}
	}

 

你可能感兴趣的:(java,windows)