JavaFX MediaPlayer状态停留在PLAYING上

时间:2016-06-29 11:40:16

标签: java javafx

public void play(File audioFile, Double startMillisecond, Double stopMillisecond) {
    if (mediaPlayer != null) {
        mediaPlayer.stop();
        mediaPlayer.dispose();
    }
    String bip = audioFile.toURI().toString();
    Media hit = new Media(bip);
    mediaPlayer = new MediaPlayer(hit);
    if (startMillisecond != null)
        mediaPlayer.setStartTime(Duration.millis(startMillisecond));
    if (stopMillisecond != null)
        mediaPlayer.setStopTime(Duration.millis(stopMillisecond));
    mediaPlayer.play();
}

在特定时间播放声音文件时, 即使在给定的StopTime

播放停止后,mediaPlayer.getStatus()也会永远停留在“播放”状态

2 个答案:

答案 0 :(得分:1)

使用OnEndOfMedia事件

解决此问题的方法
mediaPlayer.setOnEndOfMedia(new Runnable() {
    @Override
    public void run() {
        mediaPlayer.stop();
    }
});

现在mediaPlayer.getStatus()在播放结束时返回“STOPPED”。

答案 1 :(得分:0)

以下内容类似于Aboud Zakaria的回答,但在尝试多次播放媒体时有效:

mediaPlayer.setOnEndOfMedia(
    new Runnable() {
        @Override
        public void run() {
            int curCount = mediaPlayer.getCurrentCount();
            int cycCount = mediaPlayer.getCycleCount();
            if (cycCount != MediaPlayer.INDEFINITE && curCount >= cycCount)
                mediaPlayer.stop();
        }
    });
};