使用Java,我正在尝试从默认麦克风录制声音,并显示当前音量和静音状态(按照操作系统设置,不需要检查字节)。到目前为止,我可以使用以下代码获取TargetDataLine并记录它:
TargetDataLine line = (TargetDataLine) AudioSystem.getLine(new DataLine.Info(TargetDataLine.class, formato));
。在Windows上运行良好,line是使用操作系统选择的默认麦克风。目前,要获取音量/静音控件,我有以下代码:Mixer.Info[] mixerInfos = AudioSystem.getMixerInfo();
for (Mixer.Info mixerInfo : mixerInfos) {
Mixer mixer = AudioSystem.getMixer(mixerInfo);
if (mixer.getMaxLines(Port.Info.MICROPHONE) > 0) {
System.out.println("-------------");
System.out.println(mixerInfo);
Port line = (Port) mixer.getLine(Port.Info.MICROPHONE);
line.open();
Line.Info[] targets = mixer.getTargetLineInfo();
Control[] controls = line.getControls();
for (Control control : controls) {
if (control instanceof CompoundControl) {
Control[] subControls = ((CompoundControl) control).getMemberControls();
for (Control subControl : subControls) {
System.out.println(subControl);
}
} else {
System.out.println(control);
}
}
System.out.println("-----------");
}
}
我装置中有2个麦克风,但我还没有找到一种方法来知道哪个是默认的(现在是数组中的第二个)。
尝试了Line port = AudioSystem.getLine(Port.Info.MICROPHONE);
但它返回的是可用的第一个麦克风(并不是此实例中的默认麦克风)。
那么,有什么方法可以获取与所得到的TargetDataLine相关的默认麦克风端口吗?
谢谢!