2012-05-17 80 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();