Вы можете перечислить все доступные объекты микшера, используя следующее:
Mixer.Info[] mixers = AudioSystem.getMixerInfo();
for (Mixer.Info mixerInfo : mixers){
System.out.println(mixerInfo);
}
В моей системе, Mac, это результат:
Java Sound Audio Engine, версия 1.0
Встроенный ввод, версия Неизвестная версия
Встроенный микрофон, версия Неизвестная версия
Редактировать
Вот как можно извлечь список допустимых целевых строк, из которых вы можете получить аудиовход:
Mixer.Info[] mixers = AudioSystem.getMixerInfo();
List<Line.Info> availableLines = new ArrayList<Line.Info>();
for (Mixer.Info mixerInfo : mixers){
System.out.println("Found Mixer: " + mixerInfo);
Mixer m = AudioSystem.getMixer(mixerInfo);
Line.Info[] lines = m.getTargetLineInfo();
for (Line.Info li : lines){
System.out.println("Found target line: " + li);
try {
m.open();
availableLines.add(li);
} catch (LineUnavailableException e){
System.out.println("Line unavailable.");
}
}
}
System.out.println("Available lines: " + availableLines);
Получив объект Line.Info, вы можете получить объект TargetDataLine, связанный с объектом Line.Info, вызвав AudioSystem.getLine () и используя этот Line.Info в качестве параметра.