我想知道是否可以区分两个相同的USB麦克风(相同的供应商,相同的型号,相同的名称)并为每个麦克风找到唯一的标识符。
到目前为止,我所尝试的是getMixerInfo()
方法适用于具有一些变体的混音器:
// Setup a Line.Info instance specifically of the TargetDataLine class.
Line.Info targetDLInfo = new Line.Info(TargetDataLine.class);
// Get all the mixers from the Java AudioSystem
Mixer.Info[] mixerInfo = AudioSystem.getMixerInfo();
// Iterate through each mixer and see if it supports TargetDataLine
for (int cnt = 0; cnt < mixerInfo.length; cnt++) {
// Get a temporary instance of the current mixer
Mixer currentMixer = AudioSystem.getMixer(mixerInfo[cnt]);
if (currentMixer.isLineSupported(targetDLInfo)) {
// This mixer supports recording
System.out.println("MixerInfo: " + mixerInfo[cnt]);
System.out.println("Current mixer supports recording: \n"
+ "name: " + currentMixer.getMixerInfo().getName() + "\n"
+ "vendor: " + currentMixer.getMixerInfo().getVendor() + "\n"
+ "version: " + currentMixer.getMixerInfo().getVersion() + "\n"
+ "description: " + currentMixer.getMixerInfo().getDescription() + "\n"
+ "Source Line Info: " + Arrays.toString(currentMixer.getSourceLineInfo()) + "\n");
}
}
对于我的麦克风,这输出:
MixerInfo: MicrophoneName [plughw:2,0], version 3.8.0-44-generic
Current mixer supports recording:
name: MicrophoneName [plughw:2,0]
vendor: ALSA (http://www.alsa-project.org)
version: 3.8.0-44-generic
description: Direct Audio Device: Producer MicrophoneName, USB Audio, USB Audio
Source Line Info: []
MixerInfo: MicrophoneName_1 [plughw:3,0], version 3.8.0-44-generic
Current mixer supports recording:
name: MicrophoneName_1 [plughw:3,0]
vendor: ALSA (http://www.alsa-project.org)
version: 3.8.0-44-generic
description: Direct Audio Device: Producer MicrophoneName, USB Audio, USB Audio
Source Line Info: []
我没有从广告原因中提供MicrophoneName
和Producer
的实际名称,但我希望您能理解。如您所见,对它们使用相同的名称会自动将一个名称更改为MicrophonaName_1。它发生在最后插入的那个,它也不依赖于USB端口。
我正在为每个设备寻找独特的东西,例如每个设备不同的MAC地址,并且不会随时间变化。我将使用它从这些唯一标识符列表中选择所需的麦克风。有没有办法在Java中找到它?或者也许是一个让我有可能使用其独特性的演练?