【问题标题】:JavaFX MediaPlayer status stuck on PLAYINGJavaFX MediaPlayer 状态停留在 PLAYING
【发布时间】:2019-09-10 18:55:20
【问题描述】:
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();
}

在特定时长播放声音文件时, mediaPlayer.getStatus() 即使在给定的 StopTime 播放停止后,也永远停留在“正在播放”中

【问题讨论】:

    标签: java javafx


    【解决方案1】:

    使用OnEndOfMedia Event 解决此问题

    mediaPlayer.setOnEndOfMedia(new Runnable() {
        @Override
        public void run() {
            mediaPlayer.stop();
        }
    });
    

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

    【讨论】:

      【解决方案2】:

      以下类似于 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();
              }
          });
      };
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-24
        • 2011-12-02
        相关资源
        最近更新 更多