我试图在javafx中创建简单的mp3播放器,但是在调用MediaPlayer实例上的seek()方法之前,音频不会播放。
public class Main extends Application {
public static void main(String[] args) {
launch(args);
}
private MediaPlayer mediaPlayer;
@Override
public void start(Stage stage) throws Exception {
Media media = new Media(getClass().getResource("/test.mp3").toURI().toString());
mediaPlayer = new MediaPlayer(media);
mediaPlayer.statusProperty().addListener((observable, oldValue, newValue) -> {
System.out.println(newValue);
if(newValue == MediaPlayer.Status.READY) {
mediaPlayer.setAutoPlay(true);
mediaPlayer.play();
}
});
}
}
控制台输出为:
READY
PLAYING
但播放器不开始播放音频。当我用seek()方法添加另一个else if时,就开始播放了。
mediaPlayer.statusProperty().addListener((observable, oldValue, newValue) -> {
System.out.println(newValue);
if(newValue == MediaPlayer.Status.READY) {
mediaPlayer.setAutoPlay(true);
mediaPlayer.play();
} else if(newValue == MediaPlayer.Status.PLAYING) {
mediaPlayer.seek(Duration.ONE);
}
});
是JavaFX中的bug还是我遗漏了什么?我使用JDK11,在mac上使用openjdk构建openjdk。