繁体   English   中英

我如何停止播放声音? -Java

[英]How would i stop sound from playing? -Java

这是我用来播放声音的代码,非常适合我的需求。 我只是不知道如何在需要时停止播放剪辑。

public class Sound {

    public Clip play(String filename) {
        Clip clip = null;

            try {
                File file = new File(filename);
                AudioInputStream audioIn = AudioSystem.getAudioInputStream(file);
                clip = AudioSystem.getClip();
                clip.open(audioIn);
                clip.stop();
                clip.start();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return clip;
       }
}

如果您查看用于Clip JavaDocs,则应注意,从DataLine继承的方法之一是stop

停止生产线。 停止的线路应停止I / O活动。 但是,如果该生产线是开路并正在运行,则它应保留恢复活动所需的资源。 停止的行应将所有音频数据保留在其缓冲区中,而不是丢弃它,以便在恢复后,I / O可以从中断处继续进行。 (当然,这不能保证在当前缓冲区之外永远不会有不连续性;如果停止条件持续的时间过长,则可能会丢弃输入或输出样本。)如果需要,可以通过调用保留的数据来丢弃保留的数据。冲洗方法。 音频捕获或播放停止时,将生成STOP事件。

您可能需要验证这一点,但是我似乎理解start是一种阻塞方法,即一旦调用,将在Clip播放完毕之前不会返回。 这将要求Clip在单独的Thread启动

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM