2010-10-13 95 views
11

我试图编写一个错误对话框,并且我希望它调用正确的系统指定的声音。有没有办法从Java访问系统声音(即启动声音,默认哔声,星号,临界停止等)?Java中的系统声音

注:我知道java.awt.Toolkit.getDefaultToolkit().beep();

+0

你是否有意玩PC音箱?或者只是发出嘟嘟声?我不知道你如何演奏曲调,但我肯定想知道。 – Steven 2010-10-13 23:05:56

+0

我知道如何播放声音文件,我想知道如何访问操作系统的默认界面听起来 – Supuhstar 2010-10-16 10:51:41

回答

15

这里亚去(专用于Windows :)

final Runnable runnable = 
    (Runnable) Toolkit.getDefaultToolkit().getDesktopProperty("win.sound.exclamation"); 
if (runnable != null) runnable.run(); 

的Windows更多的声音(所有页面的内容相同):Java 6Java 7Java 8。 (祝你好运找到一些其他操作系统!)

3

我假设你是在谈论Windows系统的声音?我的Mac没有“临界停止”噪音。 ;-)

您需要为这些声音文件找到正确的文件系统路径。我以为他们是WAV文件,所以这样的事情应该工作:

new JavaSoundAudioClip(new FileInputStream(new File("/tmp/go.wav"))).play(); 

该文件可能有一个路径,如:

C:\WINDOWS\MEDIA\Microsoft Office 2000\EXPLODE.WAV 

注意:这将立即返回虽然声音已经“排队”到音频设备。如果您需要停止它,您可以拨打stop()

如果您需要做更特别的事情,请看this Java forum。以下是一些文档,详细说明如何使用audio system more directly

+0

我希望有一个更通用/跨平台的方法 – Supuhstar 2010-10-16 10:50:53

+0

哦,然后找到声音文件的地方,并将它们包含在你的jar /战争。每个操作系统都有很大不同的声音(或没有声音),据我所知,Java并没有提供触发它们的标准机制。 – Gray 2010-10-18 13:14:43

+0

@Supuhstar我也是,也许我会提供自己的音效。 – jamie 2017-04-12 00:34:28