Frage

Ich bin das javax.sound.sampled Paket in einem Funkdatenmodus Decodierungsprogramm. So verwenden Sie das Programm der Benutzer von ihren Funkempfänger Audio-Feeds in ihrem PC-Line-Eingang. Der Benutzer wird auch die Linie auszuwählen, die in als Aufzeichnungs Eingang benötigt, um ihr Mischprogramm zu verwenden. Das Problem ist, einige Nutzer wissen nicht, wie dies zu tun und manchmal auch andere Programme verändern die Aufnahme Eingangseinstellung. Also meine Frage ist, wie kann mein Programm erkennen, ob die Leitung in als Aufzeichnungseingang eingestellt ist? Auch ist es möglich, für mein Programm des Aufnahmeeingang Einstellungen zu ändern, wenn es erkennt, ist es falsch?

Vielen Dank für Ihre Zeit.

Ian

War es hilfreich?

Lösung

Ihre erste Frage zu beantworten, können Sie überprüfen, ob die Line.Info Objekt für Ihre Aufnahme Eingabe übereinstimmt Port.Info.LINE_IN wie folgt aus:

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;
}

Allerdings bedeutet dies nicht mit Betriebssystemen oder Soundkartentreiber APIs arbeiten, die den Typ jedes verfügbaren Mischerkanal nicht bieten. Also, wenn ich es auf Windows testen funktioniert es, aber nicht unter Linux oder Mac. Für weitere Informationen und Empfehlungen finden Sie in diesem FAQ .

Ihre zweite Frage betrifft, so können Sie versuchen, die Aufnahme Eingangseinstellungen über einen Wechsel Steuer Klasse. Insbesondere finden Sie unter FloatControl.Type für einige gängige Einstellungen. Beachten Sie, dass die Verfügbarkeit dieser Kontrollen hängt vom Betriebssystem und Soundkartentreiber, wie Line-In-Detektion.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top