停止以前播放的WAV声音

时间:2015-05-03 20:07:59

标签: java netbeans wav

我正在使用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();
    }
}               

1 个答案:

答案 0 :(得分:0)

要停止任何以前播放的音频,您可以在创建时保留对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();
    }
}