package fr.edmhouse.audio;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.FloatControl;
import javax.sound.sampled.Line;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.Mixer;
public class SoundMeter {
/**
* Sets the Volume of all the Lines of all the Mixers to the
* <code>volume</code> value.
*/
public static void setSystemVolume(float volume) {
javax.sound.sampled.Mixer.Info[] mixers = AudioSystem.getMixerInfo();
for (int i = 0; i < mixers.length; i++) {
Mixer.Info mixerInfo = mixers[i];
Mixer mixer = AudioSystem.getMixer(mixerInfo);
Line.Info[] lineinfos = mixer.getTargetLineInfo();
for (Line.Info lineinfo : lineinfos) {
try {
Line line = mixer.getLine(lineinfo);
line.open();
if (line.isControlSupported(FloatControl.Type.VOLUME)) {
FloatControl control = (FloatControl) line
.getControl(FloatControl.Type.VOLUME);
// Sets everything here.
control.setValue((float) volume);
}
} catch (LineUnavailableException e) {
}
}
}
}
}