我正在尝试在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()方法添加另一个,则开始播放。
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中的错误还是丢失了某些东西?我使用JDK11,在Mac上采用openjfx进行openjdk构建。