You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何判断JavaFX MediaPlayer何时完成音频播放?

JavaFX中监听媒体播放完毕的方案

嘿,我之前也踩过这个坑!用mediaPlayer.getStatus().equals(Status.PLAYING)判断播放状态确实不太靠谱,有时候播放结束后状态不会立刻更新,导致判断出错。好在JavaFX专门提供了和Android OnCompletionListener功能一致的监听机制——**setOnEndOfMedia()**方法。

具体用法示例

你可以直接给MediaPlayer设置播放完毕的回调逻辑,用来同步你的布尔状态:

// 假设你有个布尔变量标记播放状态
private boolean isMusicPlaying = false;

// 初始化MediaPlayer时绑定回调
mediaPlayer.setOnEndOfMedia(() -> {
    // 播放完毕后更新状态
    isMusicPlaying = false;
    // 这里还可以加其他逻辑,比如自动切歌、显示播放完成提示等
    System.out.println("当前歌曲播放完毕!");
});

额外细节补充

  • 这个回调会在媒体文件自然播放到末尾时触发,完全对应Android里OnCompletionListener.onCompletion()的场景。
  • 如果你的MediaPlayer设置了无限循环(比如mediaPlayer.setCycleCount(MediaPlayer.INDEFINITE)),这个回调不会被触发,除非你手动调用mediaPlayer.stop()或者中断播放。
  • 相比依赖getStatus()判断,用这个事件驱动的回调来同步你的布尔状态会更准确,能避免状态更新延迟带来的判断误差。

内容的提问来源于stack exchange,提问作者Sean

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:53:42