2012-05-17 78 views

回答

6

播放声音纯净的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(); 
    } 
} 
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); 
    } 

} 

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

5

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

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

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

Toolkit.getDefaultToolkit().beep(); 

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

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