Java 如何阻止音频线路以其他方式录制?

Java 如何阻止音频线路以其他方式录制?,java,Java,在stopCapture方法中,我是否可以阻止捕获(line.stop)行 public class Ouvir extends NewJFrame{ AudioFormat audioFormat; TargetDataLine targetDataLine; void captureAudio(){ Stop.setEnabled(true); try{ audioFormat = getAudioFormat

stopCapture
方法中,我是否可以阻止捕获(line.stop)行

public class Ouvir extends NewJFrame{
    AudioFormat audioFormat;
    TargetDataLine targetDataLine;

    void captureAudio(){
        Stop.setEnabled(true);
        try{
            audioFormat = getAudioFormat();
            DataLine.Info info = new DataLine.Info(TargetDataLine.class, audioFormat);
            TargetDataLine line = (TargetDataLine) AudioSystem.getLine(info);
            AudioSystem.getLine(info);
            line.open();
            line.start();
        }
        catch (LineUnavailableException e) {}
    }

    void stopCapture(){ 
    }

    private AudioFormat getAudioFormat(){
        float samplerate = 48000f;
        return new AudioFormat(samplerate,8,1,true,true);
    }
}

我猜您想调用
line.stop()
stopCapture()
方法中的类似内容。如果是,那么
TargetDataLine
变量必须是类的实例字段,而不是局部变量。在对字段调用
stop()
之前,您还需要测试null

e、 g

旁注:这看起来很危险:

catch (LineUnavailableException e) {}
您不应该忽略异常,而是应该在异常发生时处理它们


其他问题:这看起来是Swing GUI的一部分,如果是,您可能需要考虑Swing线程问题,这样您就不会有任何长时间运行的代码阻塞Swing事件线程,从而冻结GUI。

您的问题不清楚。如果(line!=null){line.stop();line.close();}像这样?看答案。但我从未使用过AudioFormat,因此无法做出保证或承诺。在这种情况下会发生什么?对不起,我迷路了,这对我来说是一个新领域haha@GabrielMendes:在什么情况下会发生什么?你是说那个空的捕集区吗?这意味着在程序运行期间可能会发生错误,而您将不知道这些错误正在发生——程序员就像闭着眼睛开车一样。我想说的是,在这种情况下会发生什么样的错误
catch (LineUnavailableException e) {}