欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android WebView 播放视频无法播放问题和视频适应屏幕大小

程序员文章站 2022-03-10 17:07:07
...

1.视频无法播放:

点击播放按钮后,提示视频加载失败,错误码0_4

Android WebView 播放视频无法播放问题和视频适应屏幕大小


解决这个问题需要添加以下代码:

在AndroidManifest中

android:hardwareAccelerated="true"


在设置webview代码中添加

//支持视频播放
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
        }
        webView.getSettings().setPluginState(WebSettings.PluginState.ON);
        webView.getSettings().setUseWideViewPort(true); // 关键点
        webView.getSettings().setAllowFileAccess(true); // 允许访问文件
        webView.getSettings().setSupportZoom(true); // 支持缩放
        webView.getSettings().setLoadWithOverviewMode(true);
        webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); // 不加载缓存内容


视频播放正常了:

Android WebView 播放视频无法播放问题和视频适应屏幕大小


2.但是我们发现视频的尺寸有点大,超过了屏幕的宽度,怎么办呢?


其实这里要用到web的css代码

在html代码中添加以下样式:

iframe {
        display: block;
        max-width:100%;
        margin-top:10px;
        margin-bottom:10px;
        }

iframe是获取的html代码中嵌套视频的标签,要对应起来

Android WebView 播放视频无法播放问题和视频适应屏幕大小


具体代码:

//官方适应屏幕
    private String getHtmlData(String bodyHTML) {
        String head = "<head>" +
                "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=no\"> " +
                "<style type=\"text/css\"> body { line-height:"+(150)+"%} </style> \n" +
                "<style>img{max-width: 100%; width:auto; height:auto;}</style>" +  //图片适应屏幕
                "<style>iframe {display: block;max-width:100%;\n" +  //视频适应屏幕
                "       margin-top:10px; margin-bottom:10px;}</style>" +
                "<style type=\"text/css\"> \n" +
                "</style> \n" +
                "</head>";
        String htmlStr = "<html>" + head + "<body>" + bodyHTML + "</body></html>";

        return htmlStr;
    }

视频大小显示就正常了:

Android WebView 播放视频无法播放问题和视频适应屏幕大小