2008-09-12 35 views
4

我在無線數據模式解碼程序中使用javax.sound.sampled包。爲了使用該程序,用戶將來自其無線電接收器的音頻饋入其PC的線路輸入。用戶還需要使用他們的混音器程序來選擇錄音輸入中的行。麻煩的是一些用戶不知道如何做到這一點,有時其他程序會改變記錄輸入設置。所以我的問題是我的程序如何檢測行內是否設置爲錄製輸入?如果檢測到錯誤,我的程序是否可以更改記錄輸入設置?Java錄音和混音器設置

謝謝你的時間。

伊恩

+0

java,不管操作系統如何? – elmarco 2008-09-12 22:30:28

回答

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

關於第二個問題,您可以嘗試通過Control類更改記錄輸入設置。具體而言,請參閱FloatControl.Type以瞭解一些常用設置。請記住,這些控件的可用性取決於操作系統和聲卡驅動程序,就像線路輸入檢測一樣。