解决JZPlayer点击重播后强制竖屏

项目中发现使用jzplayer的View播放视频,就算把View所在的Activity的屏幕方向设置为重力感应,视频结束后点击重播也会被改为竖屏并且重力感应设置失效。断点后发现,原因如下。

  1. 点击重播的按钮,调用了JZVideoPlayer中OnClick方法中R.id.start的逻辑,走到了currentState == CURRENT_STATE_AUTO_COMPLETE中的startVideo()
  2. startVideo()中调用了JZVideoPlayerManager.completeAll();,继续调用了FIRST_FLOOR_JZVD.onCompletion();
  3. onCompletion()中有一行关键代码:JZUtils.setRequestedOrientation(getContext(), NORMAL_ORIENTATION);
  4. 这个方法里会执行JZUtils.getAppCompActivity(context).setRequestedOrientation(orientation);,而JZVideoPlayer这个类中,声明了public static int NORMAL_ORIENTATION = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;,因此会导致点击重播,被强制竖屏了。

方法一:可以写个类继承JZVideoPlayerStandard,然后重写onCompletion方法,如下。

 @Override
    public void onCompletion() {
        super.onCompletion();
        //此代码用于解决重播时会强制横屏
        JZUtils.setRequestedOrientation(getContext(), FULLSCREEN_ORIENTATION);
    }

方法二:直接在JZVideoPlayerStandard的子类中将JZVideoPlayer的NORMAL_ORIENTATION变量值改为全屏使用的。

        JZVideoPlayer.NORMAL_ORIENTATION = ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE;//将视频的默认方向设为横屏

你可能感兴趣的:(Android基础)