Por el momento estoy tratando de usar un JSlider
en Java
para controlar el volumen maestro de mi PC. Hasta ahora he podido localizar el puerto del altavoz principal de mi PC. Sin embargo, no sé cómo llamarlo con éxito y ejecutar un método como getValue() o setValue().Necesito ayuda para obtener el control de la salida principal de mi computadora Altavoz
He utilizado el código siguiente para buscar mi PC para todos los dispositivos de audio que es:
Mixer.Info [] mixers = AudioSystem.getMixerInfo();
System.out.println("There are " + mixers.length + " mixer info objects");
for (Mixer.Info mixerInfo : mixers)
{
System.out.println("mixer name: " + mixerInfo.getName());
Mixer mixer = AudioSystem.getMixer(mixerInfo);
Line.Info [] lineInfos = mixer.getTargetLineInfo(); // target, not source
for (Line.Info lineInfo : lineInfos)
{
System.out.println(" Line.Info: " + lineInfo);
Line line = null;
boolean opened = true;
try
{
line = mixer.getLine(lineInfo);
opened = line.isOpen() || line instanceof Clip;
if (!opened)
{
line.open();
}
FloatControl volCtrl = (FloatControl)line.getControl(FloatControl.Type.VOLUME);
System.out.println(" volCtrl.getValue() = " + volCtrl.getValue());
}
catch (LineUnavailableException e)
{
e.printStackTrace();
}
catch (IllegalArgumentException iaEx)
{
System.out.println(" " + iaEx);
}
finally
{
if (line != null && !opened)
{
line.close();
}
}
}
}
¿Cómo consigo el control de mi línea de altavoces y alterar el valor?
He usado this sitio web para obtener ayuda hasta ahora.
ACTUALIZACIÓN
Bueno por lo que creo que he recorrido un poco más cerca. Bajo mi programa GUI de prueba estoy tratando de usar el código del tutorial de Java bajo "Obteniendo una línea que tiene los controles deseados" (el enlace que me diste). Lo pegué en mi programa debajo de mi JSlider's Change Listener.
Esto es lo que parece:
Port SPEAKER;
FloatControl volCtrl;
try {
Mixer mixer = AudioSystem.getMixer(null);
SPEAKER = (Port)mixer.getLine(Port.Info.SPEAKER);
SPEAKER.open();
volCtrl = (FloatControl) SPEAKER.getControl(
FloatControl.Type.VOLUME);
} catch (Exception e) {
System.out.println("Failed trying to find LINE_IN"
+ " VOLUME control: exception = " + e);
}
Cada vez que mueva el control deslizante se imprime el mensaje de excepción de error "Error tratando de encontrar ...". ¿Por qué no me permite obtener el volCtrl en mis altavoces de salida principal? ¿Cómo puedo arreglar este código para obtener el control de mi SPEAKER?