diff --git a/.gitignore b/.gitignore index 61e8c9b6..65b44477 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,7 @@ +# windows thumbnail cache +Thumbs.db +# Mac DS_Store Files +.DS_Store # Built application files *.apk *.aar @@ -46,6 +50,7 @@ captures/ .idea/assetWizardSettings.xml .idea/dictionaries .idea/libraries +.idea/shelf # Android Studio 3 in .gitignore file. .idea/caches .idea/modules.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 039ba2f5..9821750f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -41,9 +41,11 @@ android:screenOrientation="sensorLandscape" /> - - + + + + 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 c54dcb37..b3970c4a 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.toggleFullScreenByVideoSize(mActivity); + mControlWrapper.toggleFullScreen(mActivity); } /** @@ -508,47 +508,32 @@ public abstract class BaseVideoController extends FrameLayout if (mIsLocked) return; //没有开启设备方向监听的情况 if (!mEnableOrientation) return; - 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); - } + + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); + mControlWrapper.stopFullScreen(); } /** * 横屏 */ protected void onOrientationLandscape(Activity activity) { - 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(); - } - } + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); + if (mControlWrapper.isFullScreen()) { + handlePlayerStateChanged(VideoView.PLAYER_FULL_SCREEN); + } else { + mControlWrapper.startFullScreen(); + } } /** * 反向横屏 */ protected void onOrientationReverseLandscape(Activity activity) { - 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(); - } + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE); + if (mControlWrapper.isFullScreen()) { + 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 5ab724d3..3b3ca692 100644 --- a/player/src/main/java/xyz/doikki/videoplayer/controller/ControlWrapper.java +++ b/player/src/main/java/xyz/doikki/videoplayer/controller/ControlWrapper.java @@ -11,15 +11,15 @@ import androidx.annotation.NonNull; * 并对部分api做了封装,方便使用 */ public class ControlWrapper implements MediaPlayerControl, IVideoController { - + private MediaPlayerControl mPlayerControl; private IVideoController mController; - + public ControlWrapper(@NonNull MediaPlayerControl playerControl, @NonNull IVideoController controller) { mPlayerControl = playerControl; mController = controller; } - + @Override public void start() { mPlayerControl.start(); @@ -186,10 +186,16 @@ public class ControlWrapper implements MediaPlayerControl, IVideoController { int[] size = getVideoSize(); int width = size[0]; int height = size[1]; - if (width < height) { - activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); + if (isFullScreen()) { + stopFullScreen(); + if (width > height) { + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); + } } else { - activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); + startFullScreen(); + if (width > height) { + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); + } } } diff --git a/player/src/main/java/xyz/doikki/videoplayer/player/VideoView.java b/player/src/main/java/xyz/doikki/videoplayer/player/VideoView.java index 640f6e73..9f709c68 100644 --- a/player/src/main/java/xyz/doikki/videoplayer/player/VideoView.java +++ b/player/src/main/java/xyz/doikki/videoplayer/player/VideoView.java @@ -5,7 +5,6 @@ import android.content.ContentResolver; import android.content.Context; import android.content.res.AssetFileDescriptor; import android.content.res.TypedArray; -import android.content.pm.ActivityInfo; import android.graphics.Bitmap; import android.graphics.Color; import android.net.Uri; @@ -733,14 +732,6 @@ public class VideoView

extends FrameLayout //将播放器视图添加到DecorView中即实现了全屏 decorView.addView(mPlayerContainer); - Activity activity = getActivity(); - int[] size = getVideoSize(); - int width = size[0]; - int height = size[1]; - if (width < height) { - activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); - } - setPlayerState(PLAYER_FULL_SCREEN); } @@ -788,14 +779,6 @@ public class VideoView

extends FrameLayout decorView.removeView(mPlayerContainer); this.addView(mPlayerContainer); - Activity activity = getActivity(); - int[] size = getVideoSize(); - int width = size[0]; - int height = size[1]; - if (width < height) { - activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); - } - setPlayerState(PLAYER_NORMAL); } diff --git a/player/src/main/java/xyz/doikki/videoplayer/player/VideoViewConfig.java b/player/src/main/java/xyz/doikki/videoplayer/player/VideoViewConfig.java index 5f61ee9f..1e805184 100644 --- a/player/src/main/java/xyz/doikki/videoplayer/player/VideoViewConfig.java +++ b/player/src/main/java/xyz/doikki/videoplayer/player/VideoViewConfig.java @@ -60,7 +60,7 @@ public class VideoViewConfig { private boolean mIsEnableLog; private boolean mPlayOnMobileNetwork = true; - private boolean mEnableOrientation = true; + private boolean mEnableOrientation; private boolean mEnableAudioFocus = true; private ProgressManager mProgressManager; private PlayerFactory mPlayerFactory;