Java的FX 2警报声(Java FX 2 Alert sound)

2019-06-24 12:39发布

如何发挥的Java FX 2警报声? 有没有使用OS默认的通知声音的一种方式?

Answer 1:

玩纯JavaFX的声音

只需使用的实例AudioClip 。 这是一个很适合刚玩单短的声音。

播放默认通知声音

关于Windows操作系统存在通过访问属性的方式java.awt.Toolkit 。 返回的声音属性是一个简单Runnable可以直接没有关于声源等任何后顾之忧被解雇

使用下面的例子来看看这两个选项是如何工作的(你要“alert.wav”添加到您的src文件夹)。

package audioplayer;

import java.awt.Toolkit;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.VBox;
import javafx.scene.media.AudioClip;
import javafx.stage.Stage;

public class AudioPlayer extends Application {

    private static final AudioClip ALERT_AUDIOCLIP = new AudioClip(AudioPlayer.class.getResource("/alert.wav").toString());

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

    @Override
    public void start(Stage primaryStage) {
        VBox root = new VBox();
        Scene scene = new Scene(root, 300, 250);

        Button btn = new Button();
        btn.setText("Play (My Sound)");
        btn.setOnAction(new EventHandler<ActionEvent>() {

            @Override
            public void handle(ActionEvent event) {
                AudioPlayer.ALERT_AUDIOCLIP.play();
            }
        });

        Button btn2 = new Button();
        btn2.setText("Play (Windows Default)");
        btn2.setOnAction(new EventHandler<ActionEvent>() {

            @Override
            public void handle(ActionEvent event) {
                final Runnable runnable = (Runnable) Toolkit.getDefaultToolkit().getDesktopProperty("win.sound.default");

                if (runnable != null) {
                    runnable.run();
                }
            }
        });

        root.getChildren().add(btn);
        root.getChildren().add(btn2);

        primaryStage.setScene(scene);
        primaryStage.show();
    }
}


Answer 2:

目前没有任何在JavaFX的本身来访问OS默认警报声(你可以用JavaFX的触发的事件回放射后不理audioclips以及跟踪媒体音频如MP3)。

有一个开放的特征请求: RT-21634 (任何人可以注册以查看JIRA)。

您可以通过AWT发出蜂鸣声:

Toolkit.getDefaultToolkit().beep();

打印字符提示音,很好地命名为007应根据谷歌搜索工作,但没有我的机器上 - 我猜它访问机器蜂鸣器而不是扬声器系统和我的机器不能有蜂鸣器连接或启用。

System.out.print("\007");
System.out.flush();


Answer 3:

这是我的播放声音,

private void playMedia(Media m){
    if (m != null){
        MediaPlayer mp = new MediaPlayer(m);
        mp.play();
    }
}

public void playSomeSound(){
    try{
        Media someSound = new Media(getClass().getResource("some-sound.mp3").toString());
        playMedia(someSound);
    }catch(Exception ex){
        GeeLogger.error(getClass(), ex.getLocalizedMessage(), ex);
    }

}

不知道这么细节虽然。 希望能帮助到你。



文章来源: Java FX 2 Alert sound