2011-10-31 20 views
5

我在java中相當新。我需要在java應用程序中控制音量(音量增大/減小,靜音)。我找不到辦法做到這一點。我正在開發一個Linux系統(供參考)。在java應用程序中控制音量

我厭倦了這樣的代碼:

Java代碼:

Port lineIn; 
FloatControl volCtrl; 
try { 
    mixer = AudioSystem.getMixer(null); 
    lineIn = (Port)mixer.getLine(Port.Info.LINE_IN); 
    lineIn.open(); 
    volCtrl = (FloatControl) lineIn.getControl(

     FloatControl.Type.VOLUME); 
    // Assuming getControl call succeeds, 
    // we now have our LINE_IN VOLUME control. 
} catch (Exception e) { 
    System.out.println("Failed trying to find LINE_IN" 
    + " VOLUME control: exception = " + e); 
} 

,但我得到execption

Failed trying to find LINE_IN VOLUME control: exception = java.lang.IllegalArgumentException: Line unsupported: COMPACT_DISC source port 

感謝您的幫助

回答

-1

我不認爲這是一個常量稱爲VOLUME。它的MASTER_GAIN。所以你應該這樣做:

volCtrl = (floatControl) lineIn.getControl(FloatControl.Type.MASTER_GAIN); 
volCtrl.setValue(you_custom_value); 
+0

*有一個叫做'VOLUME'的常量,或者它不會編譯。 – wchargin

4

有時候控件是嵌套的,這使得獨立於平臺的解決方案變得困難。我寫這是用來這樣一個實用工具類:

Audio.setMasterOutputVolume(0.5f); 

源代碼是在這裏:https://github.com/Kunagi/ilarkesto/blob/master/src/main/java/ilarkesto/media/Audio.java

#1用戶可以根據WTFPL條款使用來自Audio.java代碼。

+0

感謝您的代碼,但它不適用於我:S –

+0

非常感謝,它在ubuntu中正常工作14.04 –

+0

它在ubuntu中工作正常,但不在Windows 8中工作 –