在全屏显示视频时,大多数情况下,我的android webview都可以正常工作,但是有些视频遇到了问题,有些我已经修复,有些我不能
1)全屏按钮并不总是触发onShowCustomView
。修正:从Google应用商店更新Chrome可以修复此错误
2)视频进入全屏状态,您可以听到音频,但有时整个屏幕为黑色,甚至看不到视频播放器的用户界面。示例:https://www.engadget.com/2019/05/22/vader-immortal-review-oculus-quest-vr/ 我现在有一个针对此问题的修复程序,可以在延迟2秒后调整视图的大小,但是我显然更喜欢更强大的解决方案
3)视频暂时进入全屏状态,但随后立即关闭。这只是偶尔发生,但我已经看到从Twitter打开vimeo视频时会发生这种情况。不一致,因此您必须点击一些https://mobile.twitter.com/search?q=Vimeo&src=typed_query
有什么想法可以使我的工作更加一致吗?
我的自定义Web chrome客户端:
public void onShowCustomView(View paramView, CustomViewCallback paramCustomViewCallback)
{
if (this.mCustomView != null)
{
onHideCustomView(); // I verified this wasn't the cause of point 3
return;
}
this.mCustomView = paramView;
this.mOriginalSystemUiVisibility = browserUi.getBrowser().getWindow().getDecorView().getSystemUiVisibility();
previousOrientation = browserUi.getBrowser().getRequestedOrientation();
this.mCustomViewCallback = paramCustomViewCallback;
FrameLayout decorView;
if(browserUi.isPreviewWindow()){
decorView = browserUi.getBrowser().findViewById(R.id.prev_window_fullscreen_video_container);
}else {
decorView = browserUi.getBrowser().findViewById(R.id.fullscreen_video_container);
}
decorView.setVisibility(View.VISIBLE);
decorView.addView(this.mCustomView, new FrameLayout.LayoutParams(-1, -1));
if(!browserUi.isPreviewWindow()) {
this.mCustomView.setKeepScreenOn(true); // prevents sleep while viewing
int flags = SYSTEM_UI_FLAG_LOW_PROFILE | SYSTEM_UI_FLAG_HIDE_NAVIGATION;
flags |= SYSTEM_UI_FLAG_FULLSCREEN;
flags |= SYSTEM_UI_FLAG_LAYOUT_STABLE;
flags |= SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION;
flags |= SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
flags |= SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
decorView.setSystemUiVisibility(flags);
int screenOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
browserUi.getBrowser().setRequestedOrientation(screenOrientation);
}
}