Java stuck.
Mám najítý tento kód:
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
//changes all the volumes
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.MASTER_GAIN);
//System.out.println(volCtrl.getMinimum());
volCtrl.setValue(10.0f); // do the trick
//System.out.println(" volCtrl.getValue() = " + volCtrl.getValue());
} catch (LineUnavailableException ex) {
ex.printStackTrace();
} catch (IllegalArgumentException iaEx) {
//System.out.println(" -!- " + iaEx);
} finally {
if (line != null && !opened) {
line.close();
}
}
}
}
Bohužel, tento kód mi ale prakticky nefunguje.Sice to ve zdroji zvaká, až jsem se pořádně lekl (zvukovka Xonar DX).
Nikde toto téma není pořádně dořešené, spíše jsou názory, že to jde jen přes nativní utilitu třetí strany.
https://community.oracle.com/thread/2390172
Java je nedodělek.
