Я пытаюсь сделать то же самое. Я пока не нашел хорошего решения, но могу сказать, что это не помогает, потому что вы пытаетесь получить DataLine от микшера портов. Если и когда я это выясню, я обязательно сообщу.
ик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
, который не выкуплен.
Если я используюmixer.getTargetLines()
Я получаю пустой массив.
Если я создам свой собственныйDataLine.Info
и передать его в миксерgetLine
Я получаю неподдерживаемое исключение.
Так что делать?