web-dev-qa-db-fra.com

Option plein écran non disponible lors du chargement de vidéos YouTube dans WebView

J'ai travaillé tellement de temps avec la webview avec dans l'application Android. Mais cette fois, le problème de chargement de la vidéo youtube dans WebView est étrange.

Vous voyez, c’est la capture d’écran de la vidéo youtube chargée dans le navigateur Chrome, avec l’option plein écran.

 enter image description here

Vous trouverez ci-dessous la capture d'écran de mon application dans laquelle j'ai chargé la même vidéo dans la visualisation Web. Mais ce n'est pas d'avoir cette option plein écran.

 enter image description here

Vous pouvez voir les changements dans les deux images. Les deux captures d'écran sont prises à partir du même appareil. Mais ça a toujours l'air différent.

Mon code pour le chargement de WebView est ICI DANS CE LIEN.

J'espère qu'il y aura moyen de le faire. Besoin d'aide? .. Merci.

METTRE À JOUR

J'ai également vu que le même problème est rapporté ICI. Mais je ne sais pas s’il existe une solution pour cela ou non.

Sincèrement, Shreyash

8
iDroid Explorer

iFrame est une option mais vous pouvez essayer ceci

Les extensions de classe WebView et WebChromeClient d'Android qui activent prise en charge complète de la vidéo HTML5

VideoEnabledWebView

Je n'ai pas encore essayé, mais l'espoir vous aidera.

8
M D

Effectuez les modifications suivantes dans votre fichier Java:

view.setWebViewClient(new Browser());
view.setWebChromeClient(new MyWebClient());

et ajoutez cette classe 2 qui est la classe Browser et la classe MyWebClient dans un fichier Java

class Browser
        extends WebViewClient
{
    Browser() {}

    public boolean shouldOverrideUrlLoading(WebView paramWebView, String paramString)
    {
        paramWebView.loadUrl(paramString);
        return true;
    }
}

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

    public MyWebClient() {}

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

    public void onHideCustomView()
    {
        ((FrameLayout)MainActivity.this.getWindow().getDecorView()).removeView(this.mCustomView);
        this.mCustomView = null;
        MainActivity.this.getWindow().getDecorView().setSystemUiVisibility(this.mOriginalSystemUiVisibility);
        MainActivity.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 = MainActivity.this.getWindow().getDecorView().getSystemUiVisibility();
        this.mOriginalOrientation = MainActivity.this.getRequestedOrientation();
        this.mCustomViewCallback = paramCustomViewCallback;
        ((FrameLayout)MainActivity.this.getWindow().getDecorView()).addView(this.mCustomView, new FrameLayout.LayoutParams(-1, -1));
        MainActivity.this.getWindow().getDecorView().setSystemUiVisibility(3846);
    }
}
24

Si je comprends bien, vous avez un iframe contenant un deuxième iframe (celui sur youtube) . Essayez d’ajouter l’attribut allowfullscreen au "parent" iframe.

Pour un support complet du navigateur, il devrait ressembler à ceci:

<iframe src="your_page_url" allowfullscreen="allowfullscreen" mozallowfullscreen="mozallowfullscreen" msallowfullscreen="msallowfullscreen" oallowfullscreen="oallowfullscreen" webkitallowfullscreen="webkitallowfullscreen"> </iframe>
1
Rohit Jindal