2010-10-13 114 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