веб-просмотр в полноэкранном режиме не показывает полноэкранное видео

Кто-то может пометить проблему как дубликат. Прежде чем пометить как дубликат, пожалуйста, полностью прочитайте мой вопрос. Я столкнулся с этой проблемой последние два дня. Я перепробовал все ответы, которые получил из stackoverflow, и даже клонировал некоторые проекты из github. Но ни один ответ не работает для меня, и самое главное, тот же код работает для меня несколько дней назад. Все ответы, которые у меня есть, давно вернулись. Пожалуйста, помогите мне, если можете. Ниже моего кода

webView.setWebViewClient(new AppWebViewClients());
                webView.setWebChromeClient(new MyWebClient());
                WebSettings webSettings = webView.getSettings();
                webSettings.setJavaScriptEnabled(true);
                webSettings.setDomStorageEnabled(true);


                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
                    webView.getSettings().setMediaPlaybackRequiresUserGesture(false);
                }
                try {
                    webView.loadUrl("https://www.youtube.com/watch?v=hlvbDjksdCg");
                } catch (Exception e) {
                    Log.d(TAG, "run: " + e.getMessage());
                }

Мой веб-клиент

public class MyWebClient
        extends WebChromeClient {
    private View mCustomView;
    private WebChromeClient.CustomViewCallback mCustomViewCallback;
    protected FrameLayout mFullscreenContainer;
    private int mOriginalOrientation;
    private int mOriginalSystemUiVisibility;

    MyWebClient() {
    }

    public Bitmap getDefaultVideoPoster() {
        if (StreamActivity.this == null) {
            return null;
        }
        return BitmapFactory.decodeResource(StreamActivity.this.getApplicationContext().getResources(), 2130837573);
    }

    public void onHideCustomView() {
        ((FrameLayout) StreamActivity.this.getWindow().getDecorView()).removeView(this.mCustomView);
        this.mCustomView = null;
        StreamActivity.this.getWindow().getDecorView().setSystemUiVisibility(0);
        StreamActivity.this.setRequestedOrientation(this.mOriginalOrientation);
        this.mCustomViewCallback.onCustomViewHidden();
        this.mCustomViewCallback = null;
    }

    public void onShowCustomView(View paramView, WebChromeClient.CustomViewCallback paramCustomViewCallback) {
        if (this.mCustomView != null) {
            onHideCustomView();
            return;
        }
        this.mCustomView = paramView;
        this.mOriginalSystemUiVisibility = StreamActivity.this.getWindow().getDecorView().getSystemUiVisibility();
        this.mOriginalOrientation = StreamActivity.this.getRequestedOrientation();
        this.mCustomViewCallback = paramCustomViewCallback;
        ((FrameLayout) StreamActivity.this.getWindow().getDecorView()).addView(this.mCustomView, new FrameLayout.LayoutParams(-1, -1));
        StreamActivity.this.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
                View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_FULLSCREEN);


    }
}

И, наконец, клиент веб-просмотра

открытый класс AppWebViewClients расширяет WebViewClient {

AppWebViewClients() {
    pd=Util.createProgressDialog(StreamActivity.this);
    pd.show();
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {

    view.loadUrl(url);
    return true;
}

@Override
public void onPageFinished(WebView view, String url) {
    super.onPageFinished(view, url);
    pd.dismiss();
}


}

person Rezaul Karim    schedule 16.04.2019    source источник
comment
Это может зависеть от самого видеоплеера в вашем веб-коде. Вы пробовали играть в Chrome, и он стал полноэкранным?   -  person Antonis Radz    schedule 16.04.2019
comment
я пробовал с предоставленным сервером URL-адресом, он работает в chrome   -  person Rezaul Karim    schedule 16.04.2019
comment
и что происходит, когда вы пытаетесь перейти в полноэкранный режим веб-просмотра? Пробовали ли вы использовать другой веб-движок?   -  person Antonis Radz    schedule 16.04.2019
comment
log при нажатии кнопки в полноэкранном режиме: I/Chromium: [INFO:CONSOLE(0)] Не удалось выполнить «requestFullscreen» на «Элементе»: API может быть инициировано только жестом пользователя., источник: test... Я пытаюсь использовать хром   -  person Rezaul Karim    schedule 16.04.2019
comment
Я где-то читал, что у хрома есть некоторые проблемы с полноэкранным API, вам могут потребоваться некоторые изменения для javascript, если у вас есть доступ. Прочтите этот stackoverflow. ком/вопросы/18966923/   -  person Antonis Radz    schedule 16.04.2019
comment
я пробовал это, но не работает для меня   -  person Rezaul Karim    schedule 16.04.2019


Ответы (1)


попробуй это

@Override
    public void onHideCustomView() {
        ((FrameLayout) StreamActivity.this.getWindow().getDecorView()).removeView(this.mCustomView);
        this.mCustomView = null;
        StreamActivity.this.getWindow().getDecorView().setSystemUiVisibility(mOriginalSystemUiVisibility);
        StreamActivity.this.setRequestedOrientation(this.mOriginalOrientation);
        this.mCustomViewCallback.onCustomViewHidden();
        this.mCustomViewCallback = null;
    }

    @Override
    public void onShowCustomView(View paramView, WebChromeClient.CustomViewCallback paramCustomViewCallback) {
        if (this.mCustomView != null) {
            onHideCustomView();
            return;
        }
        this.mCustomView = paramView;
        this.mOriginalSystemUiVisibility = StreamActivity.this.getWindow().getDecorView().getSystemUiVisibility();
        this.mOriginalOrientation = StreamActivity.this.getRequestedOrientation();
        this.mCustomViewCallback = paramCustomViewCallback;
        ((FrameLayout) StreamActivity.this.getWindow().getDecorView()).addView(this.mCustomView, 
                new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
                        ViewGroup.LayoutParams.MATCH_PARENT));
        int visibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
            visibility = visibility | View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
                    View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
                    View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |
                    View.SYSTEM_UI_FLAG_FULLSCREEN;
        }
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            visibility = visibility | View.SYSTEM_UI_FLAG_IMMERSIVE;
        }
        StreamActivity.this.getWindow().getDecorView().setSystemUiVisibility(visibility);
        getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    }

и должен установить атрибут активности configChanges в AndroidManifest.xml

<activity
        android:name=".StreamActivity"
        ...
        android:configChanges="keyboardHidden|orientation|screenSize" />
person fancyyou    schedule 16.04.2019
comment
не работает .. журнал при нажатии кнопки в полноэкранном режиме: I/Chromium: [INFO:CONSOLE(0)] Не удалось выполнить «requestFullscreen» на «Элементе»: API может быть инициирован только жестом пользователя., источник: тест - person Rezaul Karim; 16.04.2019