2017-12-27 540 views
0

我試圖從Android的WebView中的HTML5文件播放視頻。我已經嘗試了幾種解決方案,例如將視頻編碼爲H.264,但到目前爲止,我只能聽到沒有圖像的視頻的聲音。Android的WebView中的視頻播放聲音,但沒有hardwareAccelerated = true的圖像

代碼:

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); 

清單:

<application 
    android:hardwareAccelerated="true" 

任何幫助apreciated,謝謝。

+2

不確定你的具體問題,但我在一些應用程序中使用的示例在這裏 - https://gist.github.com/Offbeatmammal/3718414。我的猜測是'hardwareAccelerated'是一個問題(舊的Android設備),或者視頻編碼 – Offbeatmammal

+0

@Offbeatmammal謝謝你,你的鏈接幫助解決了我最初的問題。 現在,解決KitKat WebView呈現問題。 –

+0

偉大的:)我應該張貼它作爲答案,所以你可以勾選它來確認其他人? – Offbeatmammal

回答

0

實例化一個webview,以便它能夠在大多數現代Android設備上播放視頻/音頻我使用以下Java代碼。這使得在清單中使用hardwareAccelerated時,格式良好的HTML和適當編碼的視頻內容可以可靠地播放。

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"); 
    } 
} 
相關問題