Pergunta

Estou usando o pacote javax.sound.sampled em um programa de decodificação de modo de dados de rádio.Para usar o programa, o usuário alimenta o áudio do receptor de rádio na entrada de linha do PC.O usuário também deve usar seu programa de mixagem para selecionar a entrada de linha como entrada de gravação.O problema é que alguns usuários não sabem como fazer isso e às vezes outros programas alteram a configuração de entrada de gravação.Então, minha pergunta é como meu programa pode detectar se a entrada de linha está definida como entrada de gravação?Também é possível que meu programa altere a configuração de entrada de gravação se detectar que está incorreta?

Obrigado pelo seu tempo.

Ian

Foi útil?

Solução

Para responder à sua primeira pergunta, você pode verificar se o Linha.Info objeto para suas correspondências de entrada de gravação Informações.de.porta.LINE_IN assim:

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

No entanto, isso não funciona com sistemas operacionais ou APIs de driver de placa de som que não fornecem o tipo de cada canal de mixer disponível.Então, quando eu testo no Windows ele funciona, mas não no Linux ou Mac.Para obter mais informações e recomendações, consulte este Perguntas frequentes.

Em relação à sua segunda pergunta, você pode tentar alterar as configurações de entrada de gravação através de um Ao controle aula.Em particular, veja FloatControl.Type para algumas configurações comuns.Lembre-se de que a disponibilidade desses controles depende do sistema operacional e dos drivers da placa de som, assim como a detecção de entrada de linha.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top