Android-Webview kann nicht machen youtube Video eingebettet über iframe

Hier geht es darum, YouTube-Videos mit dem neuesten eingebetteten Format (iframe) in einem Webview zu laden.

Beispiel für das Iframe-Einbettungsformat

  • Wie kann ich überprüfen, ob eine Ansicht sichtbar ist oder nicht in Android?
  • Schwarzer Bildschirm auf Chrom für Android html5 Video
  • Min Höhe fill_parent und height wrap_content in ScrollView? (Oder nur die E-Mail-App komponieren Layout-Code)
  • Wie lösche ich die aktuelle Projektliste in Android Studio?
  • Erhalte den Attributnamen aus dem String-Array
  • Android RecyclerView mit SectionIndexer
  • <iframe width="637" height="358" src="http://www.youtube.com/embed/olC42gO-Ln4?fs=1&amp;feature=oembed" frameborder="0" allowfullscreen=""></iframe> 

    Testen Sie den Code auf Android 2.3.3 & 3.2 Geräte (HTC Desire & Asus Transformer), die Webview würde nur ein schwarzes Rechteck zeigen.

    Ich habe versucht, eine ähnliche Einbettung von Vimeo

     <iframe src="http://player.vimeo.com/video/35693267" width="640" height="360" frameborder="0"></iframe> 

    In 2.3 spielte das Video richtig
    In 3.2 wurde ein schwarzes Rechteck geflasht und verschwunden, der Iframe-Bereich ist leer.

    Schließlich, wenn das alte eingebettete Format (mit dem Objekt-Tag) verwendet wird, wird das Video innerhalb der Webansicht in beiden 2.3.3 & 3.2 angezeigt.

    Ich habe die damit verbundenen Fragen überprüft und hinzugefügt

     android:hardwareAccelerated="true" 

    in der Anwendung und / oder Aktivitäts-Tag aber noch kein Video in beiden 2.3 & 3.2 Geräte.

    Dies ist ein großes Problem, weil mehr Webseiten jetzt das neueste Format (iframe) verwenden, um ihre YouTube-Videos einzubetten. Android / Youtube Team, bitte werfen Sie einen Blick auf dieses Problem.

  • Öffnen Sie die Seite in Twitter App aus anderen Apps - Android
  • Wie kann ich das Spongy Castle JAR in Android aufnehmen?
  • Gibt es einen Ersatz für das Galerie-Widget mit View Recycling?
  • Wie finde ich Element in View von Koordinaten x, y Android
  • HttpURLConnection: java.lang.IllegalStateException: Bereits verbunden
  • Wie schreibe ich Text auf ImageView in der Android-Codierung?
  • 6 Solutions collect form web for “Android-Webview kann nicht machen youtube Video eingebettet über iframe”

    Android-Browser sind völlig buggy was kommt zu Video-Wiedergabe und Einbettung. Es funktioniert einfach nicht über Geräte. Der Versuch, es zu arbeiten, ist nur verschwenden Sie Ihre Zeit. Mein Vorschlag ist, dass Sie nicht versuchen, <iframe> sondern geben Sie einfach eine Miniaturansicht des Videos, die direkt Links zu YouTube-Seite oder h264-Datei.

    Frühere Diskussion mit einer möglichen Lösung.

    Google Reader-esque Optimierung von WebViews auf Android

    Wenn Sie Videos in Ihrem WebView abspielen möchten, WebView Sie die Daten mit einer Basis-URL laden!

    Dont dies tun:

     mContentWebView.loadDataWithBaseURL(null, webViewContentString, "text/html", "UTF-8", null); 

    DIESES INSTEAD :

      //veryVeryVery important for playing the videos! mContentWebView.loadDataWithBaseURL(theBaseUrl, webViewConentString, "text/html", "UTF-8", null); 

    Die Basis-URL ist die so etwas wie die "Original" -Lord von dem, was Sie in Ihrem WebView . Also sagen wir, du machst einen News-Reader, die WebView's Basis-URL wird die URL der ursprünglichen Geschichte sein.

    Viel Glück!

    Denken Sie auch daran, Ihr WebView einzurichten … So …

      mContentWebView.setWebChromeClient(new WebChromeClient()); mContentWebView.getSettings().setPluginState(WebSettings.PluginState.ON); mContentWebView.getSettings().setPluginState(WebSettings.PluginState.ON_DEMAND); mContentWebView.setWebViewClient(new WebViewClient()); mContentWebView.getSettings().setJavaScriptEnabled(true); 

    Sie müssen die Hardwarebeschleunigung im Manifest einschalten (nur auf SDK 14 und höher verfügbar).

    Ex. Hardware Beschleunigung Ein:

     <application android:name="com.example.app" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" android:hardwareAccelerated="true"> <!-- hardwareAccelerated requires SDK 14 --> ... </application> 

    HTML5 Video Unterstützung

    Um Inline-HTML5-Video in Ihrer Anwendung zu unterstützen, müssen Sie die Hardwarebeschleunigung aktiviert haben und einen WebChromeClient setzen .

    http://developer.android.com/reference/android/webkit/WebView.html

    (Hoffe es hilft jemand)

    Ich würde vorschlagen, mit einem Code, um die Umgebung des Benutzers zu erkennen … verwenden Sie den iframe Code nur für ios Geräte (iphone, ipod, ipad) und verwenden Sie den alten Code für alle anderen.

    Dieser Code passt genau zu unterschiedlichem Gerät

     webView.setInitialScale(1); webView.setWebChromeClient(new WebChromeClient()); webView.getSettings().setAllowFileAccess(true); webView.getSettings().setPluginState(WebSettings.PluginState.ON); webView.getSettings().setPluginState(WebSettings.PluginState.ON_DEMAND); webView.setWebViewClient(new WebViewClient()); webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setLoadWithOverviewMode(true); webView.getSettings().setUseWideViewPort(true); DisplayMetrics displaymetrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); int height = displaymetrics.heightPixels; int width = displaymetrics.widthPixels; Log.e(SimpleBillsConstants.SIMPLE_BILLS, width + "-" + height); String data_html = "<!DOCTYPE html><html> <head> <meta charset=\"UTF-8\"><meta name=\"viewport\" content=\"target-densitydpi=high-dpi\" /> <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"> <link rel=\"stylesheet\" media=\"screen and (-webkit-device-pixel-ratio:1.5)\" href=\"hdpi.css\" /></head> <body style=\"background:black;margin:0 0 0 0; padding:0 0 0 0;\"> <iframe style=\"background:black;\" width=' "+width+"' height='"+height+"' src=\""+ VIDEO_URL+"\" frameborder=\"0\"></iframe> </body> </html> "; webView.loadDataWithBaseURL("http://vimeo.com", data_html, "text/html", "UTF-8", null); 

    Dies hat für mich gearbeitet – der Code öffnet youtube Website und kann seine Videos in WebView spielen:

     mWebView = (WebView) findViewById(R.id.webview); WebSettings webSettings = mWebView.getSettings(); webSettings.setJavaScriptEnabled(true); String frameVideo = "<html><body>Youtube video .. <br> <iframe width=\"320\" height=\"315\" src=\"https://www.youtube.com/\" frameborder=\"0\" allowfullscreen></iframe></body></html>"; mWebView.loadData(frameVideo, "text/html", "utf-8"); mWebView.loadUrl("http://www.youtube.com/"); mWebView.setWebViewClient(new WebViewClient()); 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.