Je sais que c'est une vieille question et elle a été posée plusieurs fois. Mais j'ai essayé beaucoup de solutions, ils ne fonctionnent pas avec moi.Comment lire une vidéo en mode plein écran et quitter le mode plein écran dans Android WebView?
Je l'ai testé dans mon Huawei 6P et Samsung S7, Nexus 5, la vidéo (https://www.youtube-nocookie.com/embed/M68lNfqmTNk?rel=0&rel=0&showinfo=0) dans WebView ne fonctionne pas comme prévu (cela a fonctionné l'année dernière.). Lorsque je clique sur le bouton plein écran, "onShowCustomView" et "onHideCustomView" sont invoqués en continu. Donc, je peux voir la vidéo flashée (non-plein écran -> plein écran -> non-plein écran). Parfois, si j'ai de la chance, la vidéo passe en mode plein écran, mais si vous appuyez sur le bouton plein écran pour quitter le mode plein écran, le bouton ne fonctionne pas du tout.
J'ai écrit une démo en GitHub, j'espère que n'importe qui peut m'aider. Merci.
Voici le code
Init Webview:
mWebView = (WebView)findViewById(R.id.webview);
mWebChromeClient = new MyWebChromeClient();
mWebView.setWebChromeClient(mWebChromeClient);
mWebView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
mWebView.loadUrl(url);
return true;
}
});
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setUseWideViewPort(true);
webSettings.setAllowFileAccess(true);
webSettings.setSupportZoom(true);
webSettings.setLoadWithOverviewMode(true);
webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
MyWebChromeClient:
public class MyWebChromeClient extends WebChromeClient {
FrameLayout.LayoutParams LayoutParameters = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT);
@Override
public void onShowCustomView(View view, CustomViewCallback callback) {
Log.d("youtube", "onShowCustomView");
// if a view already exists then immediately terminate the new one
if (mCustomView != null) {
callback.onCustomViewHidden();
return;
}
mContentView = (ConstraintLayout) findViewById(R.id.activity_main);
mContentView.setVisibility(View.GONE);
mCustomViewContainer = new FrameLayout(MainActivity.this);
mCustomViewContainer.setLayoutParams(LayoutParameters);
mCustomViewContainer.setBackgroundResource(android.R.color.black);
view.setLayoutParams(LayoutParameters);
mCustomViewContainer.addView(view);
mCustomView = view;
mCustomViewCallback = callback;
mCustomViewContainer.setVisibility(View.VISIBLE);
setContentView(mCustomViewContainer);
}
@Override
public void onHideCustomView() {
Log.d("youtube", "onHideCustomView");
if (mCustomView == null) {
return;
} else {
// Hide the custom view.
mCustomView.setVisibility(View.GONE);
// Remove the custom view from its container.
mCustomViewContainer.removeView(mCustomView);
mCustomView = null;
mCustomViewContainer.setVisibility(View.GONE);
mCustomViewCallback.onCustomViewHidden();
// Show the content view.
mContentView.setVisibility(View.VISIBLE);
setContentView(mContentView);
}
}
}
Je positionniez android: hardwareAccelerated dans AndroidManifest.xml
android:hardwareAccelerated="true"
https://stackoverflow.com/questions/38842869/how-to-fullscreen-youtube-video-in-webview s'il vous plaît se référer cette espoir cette aide !!! – Kushan2
merci. J'ai essayé ça ne marche pas avec moi. – User9527
https://stackoverflow.com/questions/15796661/android-webview-app-wont-let-video-player-go-full-screen/16199649#16199649 est-ce que tu as vu ça? – Kushan2