Android Webview全屏视频工作不一致

时间:2019-05-25 08:18:30

标签: java android webview video-streaming android-fullscreen

在全屏显示视频时,大多数情况下,我的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);
    }
}

0 个答案:

没有答案