2011-10-31 77 views
5

Soy bastante nuevo en Java. Necesito controlar el volumen (subir/bajar volumen, silenciar) en una aplicación Java. No pude encontrar una manera de hacer esto. Estoy desarrollando un sistema Linux (para información).Controlando el volumen en una aplicación Java

I cansada este código:

Código 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); 
} 

pero tengo Execption

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

Gracias por su ayuda

Respuesta

-1

No creo que haya una constante llamada VOLUMEN. Su MASTER_GAIN. Entonces debería hacer

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

There * is * una constante llamada 'VOLUME', o no se compilaría. – wchargin

4

A veces los controles están anidados, lo que hace que una solución independiente de la plataforma sea difícil. He escrito una clase de utilidad que se usa así:

Audio.setMasterOutputVolume(0.5f); 

El código fuente está aquí: https://github.com/Kunagi/ilarkesto/blob/master/src/main/java/ilarkesto/media/Audio.java

usuarios Stackoverflow pueden utilizar el código de Audio.java bajo los términos de la WTFPL.

+0

gracias por el código, pero no funciona para mí: S –

+0

Gracias tanto, funciona bien probado en ubuntu 14.04 –

+0

Funciona bien en Ubuntu pero no en Windows 8 –

Cuestiones relacionadas