HTML5 android WebView 中没有视频只有音频播放

HTML5 no video only audio playing in android WebView

我有一个网页,其中包含 html5 视频和 css3 动画。该网页在 android 设备的浏览器中完美播放。

问题是,当使用 hardwareAccelerated 时,动画真的很滞后、有故障和跳跃,但视频播放正常。当我使用软件 layerType 时,动画可以完美播放,但视频无法播放(但音频可以播放),因为它不受支持。

我试过了:

  1. 清单中的硬件加速

  2. web_view.setLayerType(View.LAYER_TYPE_HARDWARE, 空)

  3. web_view.setLayerType(View.LAYER_TYPE_SOFTWARE, 空)

  4. 人行横道 XWalkView

    我也尝试过这些解决方案 Android webview slow performance, Android webview slow , 等等

我查看了 cordova webView 代码并尝试了这个

        webView.setInitialScale(0)
        webView.isVerticalScrollBarEnabled = false
        // Enable Javascript
        val settings = webView.settings
        settings.javaScriptEnabled = true
        settings.javaScriptCanOpenWindowsAutomatically = true
        settings.layoutAlgorithm = WebSettings.LayoutAlgorithm.NORMAL

这一行

        webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null)

完美修复了动画,但从 Android webview slow 中的评论来看,它说 html5 视频不受支持。

关于如何让 WebView 表现更好的任何建议?我知道 url 可以正常工作,因为它在浏览器中非常完美

我们遇到了同样的问题。尝试将 webview 的高度和宽度设置为特定值。

FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
                "ScreenWidth",
                "ScreenHeight");

这个问题伴随着 chrome webview 更新 77

对我们来说,答案是在硬件加速和软件加速之间切换。一开始我们使用的动画很激烈:

webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null)

然后当视频开始播放时,我们观察并努力

webView.setLayerType(View.LAYER_TYPE_HARDWARE, null)

这使得动画可以通过软件加速完美播放,但通过切换回硬件解决了 html5 问题。我实现了一个 javascript 接口来传递何时从 Web 视图切换回 android 应用程序。希望这对某人有所帮助!