У меня есть фрагмент Exoplayer, и я пытаюсь сохранить состояние игрока после вращения.Я использую StepView и снабжаю плеер различными URI после каждого щелчка по шагу.
Прямо сейчас, когда я поворачиваю экран во время видео, звук продолжает воспроизводиться до конца его продолжительности, но видео останавливается.
public void initializePlayer(Uri uri) {
if (uri == null) {
exoPlayerView.setVisibility(View.GONE);
} else {
defaultBandwidthMeter = new DefaultBandwidthMeter();
trackSelectionFactory = new AdaptiveTrackSelection.Factory(defaultBandwidthMeter);
trackSelector = new DefaultTrackSelector(trackSelectionFactory);
exoPlayer = ExoPlayerFactory.newSimpleInstance(getContext(), trackSelector);
exoPlayerView.setPlayer(exoPlayer);
exoPlayerView.setResizeMode(AspectRatioFrameLayout.RESIZE_MODE_FIXED_WIDTH);
dataSourceFactory = new DefaultDataSourceFactory(getContext(), Util.getUserAgent(getContext(), "bakingapp"), defaultBandwidthMeter);
mediaSource = new ExtractorMediaSource.Factory(dataSourceFactory).createMediaSource(Uri.parse(stepList.get(savedStep).getStepVideoUrl()));
exoPlayer.prepare(mediaSource);
if (playbackPosition != C.TIME_UNSET) {
exoPlayer.seekTo(playbackPosition);
}
exoPlayer.setPlayWhenReady(playWhenReady);
}
}
@Override
public void onResume() {
super.onResume();
videoUri= Uri.parse(stepList.get(savedStep).getStepVideoUrl());
stepView.go(savedStep, true);
if ((Util.SDK_INT <= 23 || exoPlayer == null)) {
initializePlayer(videoUri);
}
@Override
public void onPause() {
super.onPause();
if (Util.SDK_INT <= 23) {
releasePlayer();
}
}
private void releasePlayer() {
if (exoPlayer != null) {
playWhenReady = exoPlayer.getPlayWhenReady();
playbackPosition = exoPlayer.getCurrentPosition();
exoPlayer.stop();
exoPlayer.release();
exoPlayer = null;
}
}