停止先前播放的 WAV 声音

Stop previously played WAV sound

我正在 Java 中制作类似桌面软件电话的应用程序。我想添加拨号音 (DTMF)。例如,当我拨 51 时,按 5 后它播放 dtmf5.wav,但当我按 1 时它播放 dtmf1.wav,而不会停止 5 的提示音。如何确保一次只播放一种声音(最新的一种)?

这是我用来播放声音的:

private void lbl01MouseReleased(java.awt.event.MouseEvent evt)         {                                    
    String val=txtdisplay.getText() + "1";
    txtdisplay.setText(val);
    if (evt.getSource() == lbl01)  {
        URL urlClick = StartGUI.class.getResource("/Dtmf/dtmf1.wav");
        AudioClip click = Applet.newAudioClip(urlClick);
        click.play();
    }
}               

要停止之前播放的任何音频,您可以在创建 AudioClip 时保留对它的引用。当发送动作来播放剪辑时,只需调用它的 stop 方法来停止上一个剪辑。

AudioClip currentAudio = null;

...

private void lbl01MouseReleased(java.awt.event.MouseEvent evt){                                    
    String val=txtdisplay.getText() +"1";
    txtdisplay.setText(val);
    if ( currentAudio != null ){
        currentAudio.stop();
    }
    if (evt.getSource() == lbl01) 
    {

        URL urlClick = StartGUI.class.getResource("/Dtmf/dtmf1.wav");
        currentAudio = Applet.newAudioClip(urlClick);
        currentAudio.play();
    }
}