【问题标题】:Video in an Android's WebView plays with sound, but no image with hardwareAccelerated=trueAndroid 的 WebView 中的视频播放有声音,但没有使用 hardwareAccelerated=true 的图像
【发布时间】:2017-12-27 14:32:28
【问题描述】:

我正在尝试在 Android 的 WebView 中播放 HTML5 文件中的视频。我尝试了这里提供的几种解决方案,例如将视频编码为 H.264,但是到目前为止,我只能听到没有图像的视频声音。

代码:

    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"

感谢您的帮助。

【问题讨论】:

  • 不确定您的具体问题,但我在一些应用程序中使用的示例在这里 - gist.github.com/Offbeatmammal/3718414。我的猜测是 hardwareAccelerated 是一个问题(旧的 Android 设备),或者是视频编码
  • @Offbeatmammal 谢谢,您的链接帮助解决了我最初的问题。现在,开始解决 KitKat WebView 渲染问题。
  • 太棒了 :) 我应该把它作为答案发布,以便您可以勾选它以确认其他人吗?
  • @Offbeatmammal 当然,你的链接很有帮助。

标签: android html video webview playback


【解决方案1】:

要实例化一个 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");
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-18
    • 1970-01-01
    • 2014-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多