2008-09-12 2 views
4

Я использую пакет javax.sound.sampled в программе декодирования режима радиоданных. Чтобы использовать программу, пользователь подает аудиосигнал из своего радиоприемника в линейный вход своего ПК. Пользователь также должен использовать свою программу микшера для выбора строки в качестве входной записи. Проблема в том, что некоторые пользователи не знают, как это сделать, а также иногда другие программы изменяют настройку ввода записи. Итак, мой вопрос в том, как моя программа может определить, установлена ​​ли строка в качестве входной записи? Также возможно ли, что моя программа изменит настройку ввода записи, если она обнаружит, что она неверна?Настройки записи звука и микшера 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 для некоторых общих настроек. Имейте в виду, что доступность этих элементов управления зависит от операционной системы и драйверов звуковой карты, так же, как и для определения входа в линию.