2011-10-31 14 views
5

Sono abbastanza nuovo in Java. Ho bisogno di controllare il volume (volume su/giù, muto) in un'applicazione java. Non sono riuscito a trovare un modo per farlo. Sto sviluppando su un sistema Linux (per informazioni).Controllo del volume in un'applicazione java

mi stanco di questo codice:

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

ma ho ottenuto Execption

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

Grazie per il vostro aiuto

risposta

-1

Io non credo che ci sia un costante chiamato VOLUME. Il suo MASTER_GAIN. Quindi dovresti farlo

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

Là * è * una costante chiamata 'VOLUME', o non verrebbe compilata. – wchargin

4

A volte i controlli sono nidificati, il che rende difficile una soluzione indipendente dalla piattaforma. Ho scritto una classe di utilità che viene utilizzato come quella:

Audio.setMasterOutputVolume(0.5f); 

Il codice sorgente è qui: https://github.com/Kunagi/ilarkesto/blob/master/src/main/java/ilarkesto/media/Audio.java

utenti StackOverflow possono utilizzare il codice Audio.java sotto i termini della WTFPL.

+0

grazie per il codice ma non funziona per me: S –

+0

Grazie così folle, funziona benissimo testato in ubuntu 14.04 –

+0

Funziona bene in Ubuntu ma non in Windows 8 –

Problemi correlati