我在我的应用程序中使用了一个 http 服务器(使用 nanohttpd),它提供一个页面,该页面具有一个使用 JwPlayer 播放视频的视频元素。视频类型为 .mp4。
问题是我无法使用自定义 ROM 在我的三星 Galaxy S3 Mini 中正确再现视频。音频很好,但在视频区域内一切都是黑色的,除了右下角,它显示了部分 web 视图(故障)。我尝试启用硬件加速,但它仍然无法正常工作。
视频在 android chrome 浏览器中正确播放(可通过应用程序的服务器访问),所以可能是 WebView 或 chromium 的配置错误?它在其他一些设备(三星 Galaxy S3)中也能正常播放。
这是我用来设置 WebView 的代码:
webView = (WebView) findViewById(R.id.webview);
webView.setBackgroundColor(Color.TRANSPARENT);
if (Build.VERSION.SDK_INT >= 11)
webView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setLoadsImagesAutomatically(true);
webView.getSettings().setPluginState(PluginState.ON);
webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webView.getSettings().setAllowFileAccess(true);
getWindow().addFlags(128);
webView.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onJsAlert(WebView view, String url, String message, final android.webkit.JsResult result)
{
Log.d(LOGTAG, message);
new AlertDialog.Builder(view.getContext()).setMessage(message).setCancelable(true).show();
result.confirm();
return true;
}
});
webView.getSettings().setUserAgentString("Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729)");
播放开始时,设备会记录此错误:
08-29 10:26:31.359: E/chromium(6191): [ERROR:gles2_cmd_decoder.cc(5942)] [.Compositor-Onscreen-0x1490ca0]GL ERROR :GL_INVALID_OPERATION : glUseProgram: program not linked
08-29 10:26:31.359: E/chromium(6191): [ERROR:gles2_cmd_decoder.cc(5718)] [.Compositor-Onscreen-0x1490ca0]GL ERROR :GL_INVALID_OPERATION : glUniformMatrix4fv: wrong uniform function for type
先感谢您。