我在片段中有一个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;
}
}