Звук продолжает воспроизводиться, а видео останавливается после выпуска Exoplayer - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть фрагмент 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;
    }
}
...