Android Webview полноэкранное видео работает непоследовательно - PullRequest
1 голос
/ 25 мая 2019

В большинстве случаев мой веб-просмотр на Android работает нормально при полноэкранном просмотре видео, но есть видео, в которых возникают проблемы, некоторые я уже исправил, некоторые я не могу

1) Кнопка полноэкранного режима не всегда срабатывает onShowCustomView.ИСПРАВЛЕНО: Обновление Chrome из магазина приложений Google исправляет эту ошибку

2) Видео работает во весь экран, и вы можете слышать звук, но иногда весь экран становится черным, вы даже не видите пользовательский интерфейс видеопроигрывателя.Пример: https://www.engadget.com/2019/05/22/vader-immortal-review-oculus-quest-vr/ У меня есть исправление для этого на данный момент путем изменения размера представления с задержкой в ​​2 с, но я, очевидно, предпочел бы более надежное решение

3) Видео временно работает в полноэкранном режиме, но затемзакрывается сразуЭто происходит только изредка, но я видел, как это происходит при открытии видео Vimeo из твиттера.Это не согласовано, поэтому вам придется просмотреть несколько https://mobile.twitter.com/search?q=Vimeo&src=typed_query

Есть идеи, как мне сделать эту работу более последовательной?

Мой пользовательский веб-клиент 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);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...