package com.frinika.codeexamples; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.DataLine; import javax.sound.sampled.Line; import javax.sound.sampled.LineUnavailableException; import javax.sound.sampled.Mixer; public class LineTest { public static void main(String args[]) { Mixer.Info[] mixerInfos = AudioSystem.getMixerInfo(); System.out.println("Available Mixers: " + mixerInfos.length); for (int i = 0; i < mixerInfos.length; i++) { System.out.println("********************\n Mixer " + i + ": " + mixerInfos[i].getName() + " desc: " + mixerInfos[i].getDescription() + " vend: " + mixerInfos[i].getVendor() + " ver: " + mixerInfos[i].getVersion()); Mixer mixer = AudioSystem.getMixer(mixerInfos[i]); try { mixer.open(); } catch (LineUnavailableException e) { e.printStackTrace(); } Line.Info[] sourceLines = mixer.getSourceLineInfo(); System.out .println(" ---------------SOURCE -------------------------------- " + sourceLines.length); for (Line.Info info : sourceLines) { Line line = null; try { line = mixer.getLine(info); System.out.println(info + " | " + line); } catch (LineUnavailableException e) { e.printStackTrace(); } if (info instanceof DataLine.Info) { DataLine.Info dinfo = (DataLine.Info) info; for (AudioFormat af : dinfo.getFormats()) { System.out.println(af); } } } Line.Info[] targetLines = mixer.getTargetLineInfo(); System.out .println(" --------------- TARGET -------------------------------- " + targetLines.length); for (Line.Info info : targetLines) { Line line = null; try { line = mixer.getLine(info); System.out.println(info + " | " + line); } catch (LineUnavailableException e) { e.printStackTrace(); } if (info instanceof DataLine.Info) { DataLine.Info dinfo = (DataLine.Info) info; for (AudioFormat af : dinfo.getFormats()) { System.out.println(af); } } } mixer.close(); } } }