diff --git a/app/src/main/java/com/github/tvbox/osc/util/DefaultConfig.java b/app/src/main/java/com/github/tvbox/osc/util/DefaultConfig.java index 4e4f1724..de8dbb73 100644 --- a/app/src/main/java/com/github/tvbox/osc/util/DefaultConfig.java +++ b/app/src/main/java/com/github/tvbox/osc/util/DefaultConfig.java @@ -105,10 +105,7 @@ public class DefaultConfig { return start > -1 ? fileName.substring(0, start) : fileName; } - //增加对flv|avi|mkv|rm|wmv|mpg等几种视频格式的支持 - //private static final Pattern snifferMatch = Pattern.compile("http((?!http).){26,}?\\.(m3u8|mp4)\\?.*|http((?!http).){26,}\\.(m3u8|mp4)|http((?!http).){26,}?/m3u8\\?pt=m3u8.*|http((?!http).)*?default\\.ixigua\\.com/.*|http((?!http).)*?cdn-tos[^\\?]*|http((?!http).)*?/obj/tos[^\\?]*|http.*?/player/m3u8play\\.php\\?url=.*|http.*?/player/.*?[pP]lay\\.php\\?url=.*|http.*?/playlist/m3u8/\\?vid=.*|http.*?\\.php\\?type=m3u8&.*|http.*?/download.aspx\\?.*|http.*?/api/up_api.php\\?.*|https.*?\\.66yk\\.cn.*|http((?!http).)*?netease\\.com/file/.*"); -// private static final Pattern snifferMatch = Pattern.compile("http((?!http).)*?default\\.365yg\\.com/.*|http((?!http).){26,}?\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg)\\?.*|http((?!http).){26,}\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg)|http((?!http).){26,}?/m3u8\\?pt=m3u8.*|http((?!http).)*?default\\.ixigua\\.com/.*|http((?!http).)*?cdn-tos[^\\?]*|http((?!http).)*?/obj/tos[^\\?]*|http.*?/player/m3u8play\\.php\\?url=.*|http.*?/player/.*?[pP]lay\\.php\\?url=.*|http.*?/playlist/m3u8/\\?vid=.*|http.*?\\.php\\?type=m3u8&.*|http.*?/download.aspx\\?.*|http.*?/api/up_api.php\\?.*|https.*?\\.66yk\\.cn.*|http((?!http).)*?netease\\.com/file/.*"); - private static final Pattern snifferMatch = Pattern.compile("http((?!http).)*?default\\.365yg\\.com/.*|http((?!http).){26,}?\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg)\\?.*|http((?!http).){26,}\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg)|http((?!http).){26,}?/m3u8\\?pt=m3u8.*|http((?!http).)*?default\\.ixigua\\.com/.*|http((?!http).)*?/video/tos[^\\?]*|http((?!http).)*?dycdn-tos\\.pstatp[^\\?]*|http.*?/player/m3u8play\\.php\\?url=.*|http.*?/player/.*?[pP]lay\\.php\\?url=.*|http.*?/playlist/m3u8/\\?vid=.*|http.*?\\.php\\?type=m3u8&.*|http.*?/download.aspx\\?.*|http.*?/api/up_api.php\\?.*|https.*?\\.66yk\\.cn.*|http((?!http).)*?netease\\.com/file/.*"); + private static final Pattern snifferMatch = Pattern.compile("http((?!http).)*?default\\.365yg\\.com/.*|http((?!http).){26,}?\\.(m3u8|mp4|flv|avi|mkv|rm|rmvb|wmv|mpg|mpeg|mpe|mp3|m4a|wma)\\?.*|http((?!http).){26,}\\.(m3u8|mp4|flv|avi|mkv|rm|rmvb|wmv|mpg|mpeg|mpe|mp3|m4a|wma)|http((?!http).){26,}?/m3u8\\?pt=m3u8.*|http((?!http).)*?default\\.ixigua\\.com/.*|http((?!http).)*?/video/tos[^\\?]*|http((?!http).)*?dycdn-tos\\.pstatp[^\\?]*|http.*?/player/m3u8play\\.php\\?url=.*|http.*?/player/.*?[pP]lay\\.php\\?url=.*|http.*?/playlist/m3u8/\\?vid=.*|http.*?\\.php\\?type=m3u8&.*|http.*?/download.aspx\\?.*|http.*?/api/up_api.php\\?.*|https.*?\\.66yk\\.cn.*|http((?!http).)*?netease\\.com/file/.*|http((?!http).)*?douyin\\.com/.*/play/\\?.*|http((?!http).)*?huoshan\\.com/.*/\\?item.*"); public static boolean isVideoFormat(String url) { if (url.contains("=http") || url.contains(".html")) { return false; 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); } } 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 9f709c68..640f6e73 100644 --- a/player/src/main/java/xyz/doikki/videoplayer/player/VideoView.java +++ b/player/src/main/java/xyz/doikki/videoplayer/player/VideoView.java @@ -5,6 +5,7 @@ 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; @@ -732,6 +733,14 @@ 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); } @@ -779,6 +788,14 @@ 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 1e805184..5f61ee9f 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; + private boolean mEnableOrientation = true; private boolean mEnableAudioFocus = true; private ProgressManager mProgressManager; private PlayerFactory mPlayerFactory;