2012-10-16 48 views
0

我有一個播放音頻文件的java應用程序。因此,在我的Java應用程序播放音頻文件或聲音之前,我想將所有其他應用程序聲音(如Windows媒體播放器,VLC播放器等)靜音(如果當前正在播放)。如何在Java中獨佔訪問音頻線?

我的Java應用程序完成播放音頻文件後,我想再次取消靜音。

有沒有辦法做到這一點?

感謝

回答

1

,你不行,這無關與Java,但該操作系統不允許這樣做。行爲良好的應用程序在失去音頻焦點時應暫停播放。

+0

事實上,一些操作系統和音頻API具有獨佔訪問模式,但我相信你是正確的,當它存在時,java不直接支持它。 –

0

你不能在普通的舊Java AFAIK中做到這一點。你需要使用JNI或JNA。有一些音頻訪問API可以實現這個功能,例如你可以使用java中的portaudio(最近有人宣佈了一個開源項目,它可以做到這一點,如果你找不到它,請在portaudio maling列表中查詢),但是這個有一些問題:

  • 它會讓你的代碼平臺依賴。
  • 它不會總是有效(例如,如果您沒有權限,或者其他軟件已經在使用該設備,或者設備沒有獨佔模式或任何其他原因)。
  • 您必須重新編程您的音頻代碼才能使用PA接口而不是javasound。
+0

比約恩羅氏,感謝您的幫助。受過處理的問題對我的項目是可以接受的。我搜索了你的參考資料,但我找不到任何相關的東西。你有一些可以幫助的鏈接嗎? –