我怎么会停止播放声音? -Java

时间:2014-03-27 23:24:52

标签: java audio

这是我用来播放声音的代码,它可以完美满足我的需求。我只是不知道如何在我想要的时候停止播放剪辑。

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

1 个答案:

答案 0 :(得分:1)

如果你看一下Clip的JavaDocs,你应该注意DataLine中的一个继承方法是stop

  

停止该行。停止的行应该停止I / O活动。如果行   但是,它应该是开放和运行的,它应该保留所需的资源   恢复活动。停止的行应保留其中的任何音频数据   缓冲而不是丢弃它,以便在恢复时I / O可以   如果可能的话,继续它停止的地方。 (这不能保证   永远不会有超出当前缓冲区的不连续性   课程;如果停止状态持续太久,输入或   输出样本可能会被丢弃。)如果需要,保留的数据可以是   通过调用flush方法丢弃。音频捕获或播放时   停止,生成STOP事件。

您可能需要验证这一点,但我似乎明白start是一种阻止方法,即一旦被调用,在Clip完成播放之前不会返回。这需要Clip在单独的Thread

中启动