簡體   English   中英

使用Java 8 SDK播放聲音

[英]playing sound with java 8 sdk

我嘗試發出提示音,我使用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中不存在,我可以在某個地方找到它嗎?

混合使用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() (在這里,我做到了)。

在編寫JavaFX應用程序時,您可能應該使用內置的JavaFX AudioClip API,而不是基於AWT的API。

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

有關受支持的音頻格式的說明,請參見JavaFX媒體Javadoc

確保您的系統滿足JavaFX媒體播放最低要求

對於ubuntu,要使用JavaFX,您需要使用Oracle JDK或Emmanuel在JavaFX和OpenJDK中發布的Debian OpenJFX軟件包 Debian OpenJFX軟件包是相當新的,因此在現階段,如果可以的話,我建議您堅持使用Oracle Java運行時。


關於您關於icedtea-sound是否存在於Java 7中但不是Java 8的評論,可能是因為您的openjdk中的Java 7和Java 8是Oracle jdk,也許Oracle jdk並未附帶icedtea-sound(我沒有檢查)而且真的不知道)。 如果願意,可以嘗試使用openjdk 8 + debian openjfx軟件包,也許其中包括icedtea-sound庫。 純JavaFX媒體播放絕對不需要icedtea-sound,但使用awt beep命令可能需要icedtea-sound。 無論如何,我可能仍會建議使用JavaFX媒體庫而不是混入AWT庫的僅JavaFX解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM