Hi, ich möchte mit meinem Programm die Windows-Lautstärke beeinflussen. Das hab ich mit folgendem Code versucht (der ist nicht von mir, sondern aus dem i-Net):
Leider bekomm ich immer eine Exception:
Wär super, wenn ihr mir helfen könntet.
Grüße, Cymatoxa
Code:
private void playSound() {
try {
AudioInputStream stream = AudioSystem.getAudioInputStream(new File("test.wav"));
AudioFormat format = stream.getFormat();
if (format.getEncoding() != AudioFormat.Encoding.PCM_SIGNED) {
format = new AudioFormat( AudioFormat.Encoding.PCM_SIGNED,
format.getSampleRate(),
format.getSampleSizeInBits()*2,
format.getChannels(),
format.getFrameSize()*2,
format.getFrameRate(), true);
stream = AudioSystem.getAudioInputStream(format, stream);
}
DataLine.Info info = new DataLine.Info(Clip.class, stream.getFormat(), ((int)stream.getFrameLength()*format.getFrameSize()));
Clip clip = (Clip) AudioSystem.getLine(info);
FloatControl gainControl = (FloatControl)clip.getControl(FloatControl.Type.MASTER_GAIN);
double gain = .2d;
float dB = (float)(Math.log(gain)/Math.log(10.0)*20.0);
gainControl.setValue(dB);
BooleanControl muteControl = (BooleanControl)clip.getControl(BooleanControl.Type.MUTE);
muteControl.setValue(false);
clip.open(stream);
clip.start();
}
catch (MalformedURLException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
catch (LineUnavailableException e) {
e.printStackTrace();
}
catch (UnsupportedAudioFileException e) {
e.printStackTrace();
}
}
Code:
Exception in thread "main" java.lang.IllegalArgumentException: Unsupported control type: Master Gain
at com.sun.media.sound.AbstractLine.getControl(AbstractLine.java:147)
at simpleGame.Sound.playSound(Sound.java:49) [Das ist die Zeile FloatControl gainControl = (FloatControl)clip.getControl(FloatControl.Type.MASTER_GAIN);]
at simpleGame.Sound.<init>(Sound.java:25)
at simpleGame.Sound.main(Sound.java:76)
Java Result: 1
Wär super, wenn ihr mir helfen könntet.
Grüße, Cymatoxa