用java 8 sdk播放声音

时间:2014-11-09 13:30:05

标签: java audio javafx java-8 beep

我尝试发出一声嘟嘟声,我使用Toolkit.getDefaultToolkit()。beep(),它适用于Java 7.

import java.awt.Toolkit;

public class testbeep {

    public static void main(String[] args) {

        Toolkit.getDefaultToolkit().beep();
      }

}

Howevere,我需要使用JavaFX,而JavaFX适用于Java 8.有人可以帮助我配置我的项目吗? 我在eclipse上工作,当我使用Java 8时,蜂鸣声工作但不是JavaFX,当我使用Java 7时,蜂鸣声不起作用而JavaFX不起作用。 我注意到icetea-sound.jar存在于Java 7上并且不存在于Java 8上,我可以在某处找到它吗?

2 个答案:

答案 0 :(得分:0)

混合使用AWT和JavaFX可能有点棘手;但是这似乎对我来说很好(Java 1.8.0_20; Mac OS X 10.9.5):

import java.awt.Toolkit;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;


public class TestBeep extends Application {

    @Override
    public void start(Stage primaryStage) {
        Toolkit awtToolkit = Toolkit.getDefaultToolkit();
        Button button = new Button("Beep");
        button.setOnAction(e -> awtToolkit.beep());
        StackPane root = new StackPane(button);
        primaryStage.setScene(new Scene(root, 250, 75));
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }

}

我不知道从AWT事件处理线程以外的线程调用toolkit.beep()是否可以(在这里,我这样做)。

答案 1 :(得分:0)

在编写JavaFX应用程序时,您应该使用内置的JavaFX AudioClip API而不是基于AWT的API。

AudioClip plonkSound = new AudioClip("http://somehost/path/plonk.mp3");
plonkSound.play();

有关支持的音频格式的说明,请参阅JavaFX media Javadoc

确保您的系统符合minimum requirements for JavaFX media playback

对于ubuntu,要使用JavaFX,您需要使用Emmanuel在Debian OpenJFX package中发布的Oracle JDK或JavaFX and OpenJDK。 Debian OpenJFX软件包是一个全新的软件包,所以在这个阶段,如果可以的话,我建议坚持使用Oracle Java运行库。


关于有关icedtea-sound存在于Java 7而不是Java 8中的评论,也许这是因为你在openjdk和你的Java 8中的Java 7是Oracle jdk,也许Oracle jdk没有附带icedtea-sound(我没有& #39; t检查并且真的不知道)。如果你愿意的话,你可以试试openjdk 8 + debian openjfx包,也许会包括icedtea-sound库。纯JavaFX媒体播放绝对不需要icedtea-sound,但可能需要使用awt beep命令。无论如何,我可能仍然推荐使用JavaFX媒体库的JavaFX解决方案,而不是混合使用AWT库。