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.
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.
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
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
Je n'ai pas encore essayé, mais l'espoir vous aidera.
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);
}
}
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>