2017-12-27 10 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); 

매니페스트 :

어떤 도움이 apreciated된다
<application 
    android:hardwareAccelerated="true" 

, 감사합니다.

+2

특정 문제는 확실하지 않지만 몇 가지 앱에서 사용한 샘플은 여기에 있습니다. - https://gist.github.com/Offbeatmammal/3718414. 내 생각 엔'hardwareAccelerated '(오래된 Android 기기) 또는 비디오 인코딩 – Offbeatmammal

+0

이 될 것입니다. @Offbeatmammal 감사합니다. 내 링크가 내 초기 문제를 해결하는 데 도움이되었습니다. 이제 KitKat WebView 렌더링 문제를 해결하십시오. –

+0

위대한 :) 나는 다른 사람을 확인하기 위해 그것을 체크 할 수 있도록 대답으로 게시해야합니까? – Offbeatmammal

답변

0

대부분의 최신 Android 기기에서 동영상/오디오를 재생할 수 있도록 webview를 인스턴스화하기 위해 다음과 같은 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"); 
    } 
} 
관련 문제