2017-12-27 9 views
0

Ich versuche, ein Video aus einer HTML5-Datei in einem Android WebView zu spielen. Ich habe verschiedene Lösungen ausprobiert, die hier angeboten werden, z. B. die Kodierung des Videos nach H.264, aber bisher höre ich nur den Ton des Videos ohne Bild.Video in einem Android WebView spielt mit Ton, aber kein Bild mit hardwareAccelerated = true

Code:

webView.setWebChromeClient(new WebChromeClient()); 
    settings.setJavaScriptEnabled(true); 
    settings.setPluginState(WebSettings.PluginState.ON); 
    settings.setLoadWithOverviewMode(true); 
    settings.setUseWideViewPort(true); 

    String data = "index.html"; 
    webView.loadUrl(data); 

    webView.setBackgroundColor(Color.TRANSPARENT); 
    webView.setLayerType(WebView.LAYER_TYPE_SOFTWARE, null); 
    webView.clearCache(true); 

Manifest:

<application 
    android:hardwareAccelerated="true" 

Jede Hilfe apreciated wird es Ihnen danken.

+2

nicht Ihr spezielles Problem sicher, aber meine Probe, die ich in einigen Anwendungen verwendet habe, ist hier - https://gist.github.com/Offbeatmammal/3718414. Meine Vermutung wird entweder die "hardwareAccelerated" ein Problem sein (ältere Android-Geräte), oder die Videokodierung – Offbeatmammal

+0

@Offbeatmammal danke, half Ihr Link mein erstes Problem gelöst. Jetzt, um KitKat WebView Rendering Probleme zu lösen. –

+0

groß :) soll ich es als Antwort posten, damit Sie es für andere bestätigen können? – Offbeatmammal

Antwort

0

um eine Webansicht zu instanziieren, so dass es Video/Audio auf den meisten modernen Android-Geräten wiedergeben kann, verwende ich den folgenden Code Java. Dies ermöglicht, dass gut formatierter HTML-Code und entsprechend codierter Videoinhalt zuverlässig wiedergegeben werden, wenn hardwareAccelerated im Manifest verwendet wird.

package com.offbeatmammal.android.webview; 

import android.app.Activity; 
import android.os.Bundle; 
import android.webkit.WebChromeClient; 
import android.webkit.WebSettings; 
import android.webkit.WebView; 
import android.widget.RelativeLayout; 

public class WebViewActivity extends Activity { 

private WebView webView; 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.webview); 

    webView = (WebView) findViewById(R.id.webView1); 

    webView.setWebChromeClient(new WebChromeClient()); 
    webView.getSettings().setPluginState(WebSettings.PluginState.ON_DEMAND); 
    webView.getSettings().setJavaScriptEnabled(true); 

    // load the customURL with the URL of the page you want to display 
    String pageURL = "http://url/page.html"; 
    webView.loadUrl(pageURL); 

    //String customHtml = "<html><head><title>Sample</title></head><body><p>Sample</p></body></html>"; 
    //webView.loadData(customHtml, "text/html", "UTF-8"); 
    } 
}