チュートリアル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()
と、 one の配列を受け取りますInfo
。これを に渡すとmixer.getLine
、タイプ のオブジェクトが返されますがcom.sun.media.sound.PortMixer$PortMixerPort
、これは文書化されていません。
使用するmixer.getTargetLines()
と、空の配列が得られます。
自分で作成DataLine.Info
してミキサーに渡すと、getLine
サポートされていない例外が発生します。
じゃあ何をすればいいの?