Учебник http://download.oracle.com/javase/tutorial/sound/capturing.html не описывает, как выбрать микрофон.
Я перечисляю микшеры с помощью следующего кода
System.out.println("Searching for microphones");
for(Mixer.Info mixerinfo : AudioSystem.getMixerInfo()) {
mixer = AudioSystem.getMixer(mixerinfo);
//System.out.println(mixerinfo.toString());
if( mixer.isLineSupported(Port.Info.MICROPHONE) ) {
mixers.add(mixer);
System.out.println(Integer.toString(mixers.size()) + ": " + mixerinfo.toString());
}
}
т.е. по наличию микрофонного входа. Но затем, имея микшер, я не могу получить строку для чтения.
Если я использую Mixer.getTargetLineInfo ()
, я получаю массив из единиц Info
, который при переход к Mixer.getLine
возвращает объект типа com.sun.media.sound.PortMixer $ PortMixerPort
, который не дублируется.
Если я использую микшер. getTargetLines ()
Я получаю пустой массив.
Если я создаю свой собственный DataLine.Info
и передаю его микшеру getLine
, я получаю неподдерживаемое исключение.
] Итак, что делать?