【发布时间】:2016-02-15 14:26:07
【问题描述】:
说明
Mac OS X 10.10.3
尝试控制麦克风(基本上,将系统麦克风音量设置为 100% + 希望取消静音并尝试解决此问题https://discussions.apple.com/message/29309845#29309845)。
(代码改进)
import javax.sound.sampled.*;
public class MicMacMax {
public static void main(String[] args) {
Mixer.Info microphone = null;
for (Mixer.Info info : AudioSystem.getMixerInfo()) {
System.out.println("Potential mixer: " + info.getName());
if (info.getName().equals("Built-in Input")) {
microphone = info;
}
}
if (microphone == null) {
System.out.println("Microphone not found");
System.exit(-1);
}
final Mixer mixer = AudioSystem.getMixer(microphone);
try {
mixer.open();
} catch (LineUnavailableException e) {
e.printStackTrace();
System.exit(-1);
}
final Line lineIn;
try {
lineIn = mixer.getLine(mixer.getTargetLineInfo()[0]);
lineIn.open();
if (lineIn.isControlSupported(FloatControl.Type.MASTER_GAIN)) {
System.out.println("Gain supported");
}
final CompoundControl cc = (CompoundControl) lineIn.getControls()[0];
final Control[] controls = cc.getMemberControls();
for (final Control c : controls) {
if (c instanceof FloatControl) {
System.out.println("BEFORE LINE_IN VOL = "
+ ((FloatControl) c).getValue());
((FloatControl) c).setValue((float) 100 / 100);
System.out.println("AFTER LINE_IN VOL = "
+ ((FloatControl) c).getValue());
}
}
} catch (final Exception e) {
e.printStackTrace();
}
}
}
这段代码抛出:
java.lang.ArrayIndexOutOfBoundsException: 0 在 MicMacMax.main(MicMacMax.java:24)
这意味着该行没有控件。
需要帮助
我的代码有错误吗?
如果有人可以在他们的机器上测试此代码并提供反馈,那就太好了。我想隔离这个问题。
- 可能与某种权限问题有关吗?
【问题讨论】:
标签: java macos controls microphone