La vidéo YouTube ne joue pas dans WebView – Android

Je suis en train de lire la vidéo YouTube dans WebView, WebView montrant le premier regard de la vidéo avec le bouton de lecture, mais après avoir cliqué sur le bouton Démarrer la barre de progression

Image 1: Premier regard sur la vidéo avec le bouton de lecture

Image2: Après avoir cliqué, l’écran du bouton de lecture est vide.

S’il vous plaît! aidez-moi pourquoi la vidéo ne démarre pas.

IMAGE: 1 Ceci est le premier regard de la vue Web

IMAGE: 2 entrer la description de l'image ici

Ceci est mon code source pour lire YouTubeVideo dans webview .. S’il vous plaît aidez-moi …

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); WebView wv = (WebView) findViewById(R.id.webView1); wv.getSettings().setJavaScriptEnabled(true); wv.getSettings().setPluginsEnabled(true); final Ssortingng mimeType = "text/html"; final Ssortingng encoding = "UTF-8"; Ssortingng html = getHTML(); wv.loadDataWithBaseURL("", html, mimeType, encoding, ""); } public Ssortingng getHTML() { Ssortingng html = "\n" + "\n"; return html; } 

Ajoutez ces lignes avant de charger du contenu HTML sur votre WebView.

 wv.setWebChromeClient(new WebChromeClient() { }); 

De la documentation:

Pour prendre en charge la vidéo HTML5 intégrée dans votre application, vous devez activer l’ accélération matérielle et définir un WebChromeClient . Pour la prise en charge en mode plein écran, les implémentations de onShowCustomView (View, WebChromeClient.CustomViewCallback) et onHideCustomView () sont obligatoires, getVideoLoadingProgressView () est facultatif.

Le code suivant est nécessaire pour afficher le lecteur vidéo démarré par le framework Web Core. La clé de l’ensemble du stream est que VideoView est renvoyé à WebChromeClient et que vous devez associer cette vue à votre hiérarchie de vues.

Je l’ai assemblé en examinant le code source du navigateur disponible dans le cadre de l’AOSP.

Ce code fait référence à 4 vues qui peuvent ne pas être évidentes. La hiérarchie des vues est la suivante:

  • FrameLayout mContentView (root)
  • WebView mWebView (enfant de mContentView)
  • FrameLAyout mCustomViewContainer (enfant de mContentView)
  • View mCustomView (enfant de mCustomViewContainer)

Les vues sont configurées dans le cadre de la configuration de l’activité du conteneur.

      

Dans vos activités onCreate :

  mContentView = (FrameLayout) findViewById(R.id.main_content); mWebView = (WebView) findViewById(R.id.webView); mCustomViewContainer = (FrameLayout) findViewById(R.id.fullscreen_custom_content); 

Enregistrez un WebChromeClient avec mWebView . Ce client doit remplacer les 2 ou 4 méthodes suivantes:

 void onShowCustomView(View view, WebChromeClient.CustomViewCallback callback) { // if a view already exists then immediately terminate the new one if (mCustomView != null) { callback.onCustomViewHidden(); return; } // Add the custom view to its container. mCustomViewContainer.addView(view, COVER_SCREEN_GRAVITY_CENTER); mCustomView = view; mCustomViewCallback = callback; // hide main browser view mContentView.setVisibility(View.GONE); // Finally show the custom view container. mCustomViewContainer.setVisibility(View.VISIBLE); mCustomViewContainer.bringToFront(); } void onHideCustomView() { if (mCustomView == null) return; // 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); } public Bitmap getDefaultVideoPoster() { if (mDefaultVideoPoster == null) { mDefaultVideoPoster = BitmapFactory.decodeResource(getResources(), R.drawable.default_video_poster); } return mDefaultVideoPoster; } public View getVideoLoadingProgressView() { if (mVideoProgressView == null) { LayoutInflater inflater = LayoutInflater.from(this); mVideoProgressView = inflater.inflate(R.layout.video_loading_progress, null); } return mVideoProgressView; } 

Vous pouvez également append des liaisons de cycle de vie d’activité, telles que:

 @Override protected void onStop() { super.onStop(); if (mCustomView != null) { if (mCustomViewCallback != null) mCustomViewCallback.onCustomViewHidden(); mCustomView = null; } } @Override public void onBackPressed() { if (mCustomView != null) { onHideCustomView(); } else { finish(); } } 

À votre activité pour que la vidéo se cache lorsque l’activité est arrêtée ou que le bouton Précédent est enfoncé.

Ajouter webview.setWebChromeClient(new WebChromeClient()); et pour activer les plugins pour votre vidéo

 if (Build.VERSION.SDK_INT < 8) { webview.getSettings().setPluginsEnabled(true); } else { webview.getSettings().setPluginState(PluginState.ON); } 

Thnaks

Il y a un problème avec les vidéos diffusées sur vos appareils mobiles. Si vous essayez directement de charger l’URL dans la vue Web et de l’exécuter, la vidéo ne sera pas lue. Un moyen difficile de résoudre ce problème consiste à diffuser la vidéo dans la vue vidéo. Je n’ai pas essayé cela mais cela peut être fait.
Une autre façon de lire les vidéos sur youtube, je vais appeler cela le moyen le plus simple est de changer l’agent utilisateur dans les parameters d’affichage Web du périphérique mobile sur un bureau. L’agent utilisateur indique le type de périphérique sur lequel la vidéo YouTube s’exécutera et, par conséquent, ce type de page Web est envoyé par le serveur. De cette façon, la vidéo sur youtube peut être diffusée et diffusée. Voici comment procéder:

 public static final int USER_MOBILE = 0; public static final int USER_DESKTOP = 1; wv.getSettings().setUserAgent(USER_DESKTOP); // 1 is for the desktop 

J’ai copié le code de demandeur et cela a fonctionné pour moi …. je pense que vous devez installer Flash Payant .. di u ?? et as-tu ajouté la permission internet ???

btw mon code est ici …

 package com.example.youtube; import android.annotation.SuppressLint; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.widget.Button; import android.widget.EditText; import android.widget.ProgressBar; import android.widget.Toast; import android.util.Log; import android.view.Menu; import android.view.Window; import android.view.WindowManager; import android.webkit.DownloadListener; import android.webkit.WebChromeClient; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebChromeClient; import android.webkit.WebViewClient; import android.view.View; import android.view.ViewGroup; import android.view.View.OnClickListener; import android.widget.AbsoluteLayout; import android.content.BroadcastReceiver; import android.content.Context; import android.content.IntentFilter; import android.os.AsyncTask; import android.util.Log; import android.widget.TextView; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; public class MainActivity extends Activity{ @SuppressLint("SetJavaScriptEnabled") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); getWindow().requestFeature(Window.FEATURE_PROGRESS); setContentView(R.layout.activity_main); final ProgressBar Pbar; Pbar = (ProgressBar) findViewById(R.id.pB4); WebView wv = (WebView) findViewById(R.id.webVie1); //wv.setWebViewClient(new Callback()); WebSettings webSettings = wv.getSettings(); webSettings.setBuiltInZoomControls(true); webSettings.setJavaScriptEnabled(true); //wv.setBackgroundColor(0x919191); final Ssortingng mimeType = "text/html"; final Ssortingng encoding = "UTF-8"; Ssortingng html = getHTML(); wv.loadDataWithBaseURL("", html, mimeType, encoding, ""); final Activity activity = this; wv.setWebChromeClient(new WebChromeClient() { public void onProgressChanged(WebView view, int progress) { // Activities and WebViews measure progress with different scales. // The progress meter will automatically disappear when we reach 100% activity.setProgress(progress * 100); { if(progress < 100 && Pbar.getVisibility() == ProgressBar.GONE){ Pbar.setVisibility(ProgressBar.VISIBLE); } Pbar.setProgress(progress); if(progress == 100) { Pbar.setVisibility(ProgressBar.GONE); } } } }); wv.setWebViewClient(new WebViewClient() { public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { Toast.makeText(activity, "Oh no! " + description, Toast.LENGTH_LONG).show(); } }); wv.setDownloadListener(new DownloadListener() { public void onDownloadStart(String url, String userAgent,String contentDisposition, String mimetype,long contentLength) { Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); startActivity(intent); } }); } private String getHTML() { // TODO Auto-generated method stub String html1 = "\n"; return html1; } /* public void onPause() { super.onPause(); System.exit(0); }*/ } 

fichier de mise en page

       />  

Pourquoi voulez-vous lire votre vidéo en tube dans Webview? Vous pouvez y jouer en utilisant cette intention

 startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(ssortingngUrl))); 

Sinon, si vous voulez y jouer en webView, suivez ce lien

http://www.stackoverflow.com/questions/9565533/android-how-to-play-youtube-video-in-webview?rq=1

Essaye celui-là

 startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(ssortingngUrl)));