释放Exoplayer后,音频继续播放,而视频停止播放

时间:2019-02-06 20:38:45

标签: java android media release exoplayer

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

0 个答案:

没有答案