diff --git a/player/src/main/java/xyz/doikki/videoplayer/controller/BaseVideoController.java b/player/src/main/java/xyz/doikki/videoplayer/controller/BaseVideoController.java index b3970c4a..c54dcb37 100644 --- a/player/src/main/java/xyz/doikki/videoplayer/controller/BaseVideoController.java +++ b/player/src/main/java/xyz/doikki/videoplayer/controller/BaseVideoController.java @@ -396,7 +396,7 @@ public abstract class BaseVideoController extends FrameLayout * 横竖屏切换 */ protected void toggleFullScreen() { - mControlWrapper.toggleFullScreen(mActivity); + mControlWrapper.toggleFullScreenByVideoSize(mActivity); } /** @@ -508,32 +508,47 @@ public abstract class BaseVideoController extends FrameLayout if (mIsLocked) return; //没有开启设备方向监听的情况 if (!mEnableOrientation) return; - - activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); - mControlWrapper.stopFullScreen(); + int[] size = mControlWrapper.getVideoSize(); + int width = size[0]; + int height = size[1]; + int o = activity.getRequestedOrientation(); + if (width < height && o != ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) { + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); + mControlWrapper.replay(true); + } } /** * 横屏 */ protected void onOrientationLandscape(Activity activity) { - activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); - if (mControlWrapper.isFullScreen()) { - handlePlayerStateChanged(VideoView.PLAYER_FULL_SCREEN); - } else { - mControlWrapper.startFullScreen(); - } + int[] size = mControlWrapper.getVideoSize(); + int width = size[0]; + int height = size[1]; + if (width > height) { + if (mControlWrapper.isFullScreen()) { + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); + handlePlayerStateChanged(VideoView.PLAYER_FULL_SCREEN); + } else { + mControlWrapper.startFullScreen(); + } + } } /** * 反向横屏 */ protected void onOrientationReverseLandscape(Activity activity) { - activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE); - if (mControlWrapper.isFullScreen()) { - handlePlayerStateChanged(VideoView.PLAYER_FULL_SCREEN); - } else { - mControlWrapper.startFullScreen(); + int[] size = mControlWrapper.getVideoSize(); + int width = size[0]; + int height = size[1]; + if (width > height) { + if (mControlWrapper.isFullScreen()) { + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE); + handlePlayerStateChanged(VideoView.PLAYER_FULL_SCREEN); + } else { + mControlWrapper.startFullScreen(); + } } } diff --git a/player/src/main/java/xyz/doikki/videoplayer/controller/ControlWrapper.java b/player/src/main/java/xyz/doikki/videoplayer/controller/ControlWrapper.java index e2b88c30..5ab724d3 100644 --- a/player/src/main/java/xyz/doikki/videoplayer/controller/ControlWrapper.java +++ b/player/src/main/java/xyz/doikki/videoplayer/controller/ControlWrapper.java @@ -186,16 +186,10 @@ public class ControlWrapper implements MediaPlayerControl, IVideoController { int[] size = getVideoSize(); int width = size[0]; int height = size[1]; - if (isFullScreen()) { - stopFullScreen(); - if (width > height) { - activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); - } + if (width < height) { + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } else { - startFullScreen(); - if (width > height) { - activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); - } + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); } }