使用 java 8 sdk 播放声音
Posted
技术标签:
【中文标题】使用 java 8 sdk 播放声音【英文标题】:playing sound with java 8 sdk 【发布时间】:2014-11-09 13:30:05 【问题描述】:我尝试播放哔声,我使用 Toolkit.getDefaultToolkit().beep(),它适用于 Java 7。
import java.awt.Toolkit;
public class testbeep
public static void main(String[] args)
Toolkit.getDefaultToolkit().beep();
但是,我需要使用 JavaFX,而 JavaFX 可以在 Java 8 上运行。有人可以帮我配置我的项目吗? 我在 Eclipse 上工作,当我使用 Java 8 时,哔声有效,但 JavaFX 无效,当我使用 Java 7 时,哔声无效,JavaFX 无效。 我注意到 icetea-sound.jar 存在于 Java 7 上,但不存在于 Java 8 上,我可以在某处找到它吗?
【问题讨论】:
【参考方案1】:混合 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()
(在这里,我这样做了)。
【讨论】:
我在 Ubuntu 14.04.1 LTS【参考方案2】:在编写 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,您需要使用 Oracle JDK 或 Emmanuel 在 JavaFX and OpenJDK 中发布的 Debian OpenJFX package。 Debian OpenJFX 包是相当新的,所以在这个阶段,如果可以的话,我建议坚持使用 Oracle Java 运行时。
关于您对 Java 7 中存在 icedtea-sound 而不是 Java 8 的评论,这可能是因为您在 openjdk 中的 Java 7 和您的 Java 8 是 Oracle jdk,也许 Oracle jdk 没有附带 icedtea-sound(我没有'没有检查,并不真正知道)。如果您愿意,您可以尝试使用 openjdk 8 + debian openjfx 软件包,也许其中包括 icedtea-sound 库。纯 JavaFX 媒体播放绝对不需要 icedtea-sound,但可能需要使用 awt beep 命令。无论如何,我可能仍然会推荐使用 JavaFX 媒体库而不是混合 AWT 库的仅 JavaFX 解决方案。
【讨论】:
以上是关于使用 java 8 sdk 播放声音的主要内容,如果未能解决你的问题,请参考以下文章