Java FX 2警报声

DD.*_*DD. 8 audio alert javafx-2

如何在Java FX 2中播放警报声?有没有办法使用操作系统默认通知声音?

pmo*_*ule 10

使用纯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();
    }
}
Run Code Online (Sandbox Code Playgroud)


jew*_*sea 8

JavaFX本身目前没有任何东西可以访问操作系统默认警报声音(您可以使用JavaFX触发事件来重放火灾并忘记音频剪辑以及跟踪的媒体音频,如mp3).

有一个开放的功能请求:RT-21634(任何人都可以注册查看jira).

你可以通过awt发出哔哔声:

Toolkit.getDefaultToolkit().beep();
Run Code Online (Sandbox Code Playgroud)

打印一个名为007的嘟嘟字符应该可以根据谷歌搜索工作,但不能在我的机器上工作 - 我想它会访问机器中的蜂鸣器而不是扬声器系统,我的机器不能连接或启用蜂鸣器.

System.out.print("\007");
System.out.flush();
Run Code Online (Sandbox Code Playgroud)


als*_*scu 5

这就是我播放声音的方式

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);
    }

}
Run Code Online (Sandbox Code Playgroud)

虽然不知道SO的细节。希望能帮助到你。