2008-09-12 11 views
4

私は無線データモードのデコードプログラムでjavax.sound.sampledパッケージを使用しています。このプログラムを使用するために、ユーザは自分のラジオ受信機からPCのライン入力にオーディオを供給します。また、ユーザはミキサープログラムを使用して、録音入力としてラインを選択する必要があります。問題は、これを行う方法がわからないユーザーもいれば、録音入力の設定を変更するプログラムがあることもあります。だから私の質問は、私のプログラムは、ライン入力が録音入力として設定されているかどうかを検出できますか?また、私のプログラムが誤っていると判断した場合、録音入力設定を変更することも可能ですか?Javaサウンドの録音とミキサーの設定

お時間をいただきありがとうございます。

イアン

+0

Javaに関係なく、OSは? – elmarco

+0

すべてのOSでコードが実行されている方が良いでしょう。 – IanW

答えて

2

録音入力用Line.Infoオブジェクトは、このようなPort.Info.LINE_INと一致するかどうかをチェックすることができ、あなたの最初の質問に答えるために:

public static boolean isLineIn(Line.Info lineInfo) { 
    Line.Info[] detected = AudioSystem.getSourceLineInfo(Port.Info.LINE_IN); 
    for (Line.Info lineIn : detected) { 
     if (lineIn.matches(lineInfo)) { 
      return true; 
     } 
    } 
    return false; 
} 

しかし、これは、オペレーティングシステムやサウンドカードでは動作しません。使用可能な各ミキサーチャネルのタイプを提供しないドライバーAPI。ですから、Windowsでテストすると動作しますが、LinuxやMacでは動作しません。詳細および推奨事項については、FAQを参照してください。

2番目の質問については、Controlクラスを使用して録音入力設定を変更してみてください。特に、いくつかの一般的な設定についてはFloatControl.Typeを参照してください。これらのコントロールの可用性は、ラインイン検出のように、オペレーティングシステムとサウンドカードドライバによって異なります。

関連する問題