java - 在java中播放音频文件

标签 java file audio playback restart

我的目标是制作一个程序,通过一个名为play的按钮显示弹出窗口。我正在使用内部类和 Action 监听器。该按钮实际上会播放音频剪辑。现在我想做的是,每次我按下播放按钮时,它都会从头开始播放,并且在完成时我不会听到超过一个剪辑实例。这是我仅用于内部类的代码:

private class PlaySound implements ActionListener {

    public void actionPerformed(ActionEvent e) {
        String filename = "/Users/philipgouldman/Desktop/iPhoneRingtones/Dummy_Yeah.wav";

        try {
            Clip clip = AudioSystem.getClip();
            clip.open(AudioSystem.getAudioInputStream(new File(filename)));
            clip.setFramePosition(0);
            clip.start();
        } catch (Exception exc) {
            exc.printStackTrace(System.out);
        }
    }

}

对于实现这一目标的任何提示或建议,我将不胜感激。我在 Clip Interface javadoc 上读到,如果用户希望重新启动操作,只需调用 setFramePosition(0) 之后的 stop 即可。我不能说我完全理解这意味着什么。有人可以引导我走向正确的方向吗?

最佳答案

将您的 Clip 对象移到此句柄之外,以便稍后调查其状态。

例如

private class PlaySound implements ActionListener {

    private Clip clip = null;
    public void actionPerformed(ActionEvent e) {
        String filename = "/Users/philipgouldman/Desktop/iPhoneRingtones/Dummy_Yeah.wav";

        try {
            if (clip == null) {
                clip = AudioSystem.getClip();
                clip.open(AudioSystem.getAudioInputStream(new File(filename)));
            }
            clip.setFramePosition(0);
            clip.start();
        } catch (Exception exc) {
            exc.printStackTrace(System.out);
        }
    }

}

关于java - 在java中播放音频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39381760/

相关文章:

linux - 查找当前目录下所有可写文件

python - 如何对两个 wav 文件的 fft 进行卷积

JQuery - for 循环中加载的元数据监听器

algorithm - 通过算法将音频与目标对齐

c - 获取没有完整路径的目录名 (C unix)

java - Java Web Start 是否需要启用 Java 浏览器插件?

java - admob 插页式按钮按下后立即显示?

java - 在 IntelliJ 中重新排列修饰符关键字

java - 导入包语句不起作用

file - GTFS 有哪些问题?