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()
也会永远停留在“播放”状态
答案 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();
}
});
};