Android WebView加载url网络视频

来源:互联网 发布:吸入麻醉药七氟烷mac值 编辑:程序博客网 时间:2024/05/29 17:19

前言

webview 的 功能日益强大,不仅可以用来加载图片,网站链接,
今天聊一聊 webview 加载视频的那些混淆点。

加载 视频 一般会设置 硬件加速。其实 两者一毛钱 关系都没有 ,webview 不设置 硬件加速,依然能够加载出来 ,不受其影响。

代码实现

            WebSettings settings = webview.getSettings();            //webView  加载视频,下面五行必须            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {                settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);            }            settings.setJavaScriptEnabled(true);//支持js            settings.setPluginState(WebSettings.PluginState.ON);// 支持插件            settings.setLoadsImagesAutomatically(true);  //支持自动加载图片            settings.setUseWideViewPort(true);  //将图片调整到适合webview的大小  无效            settings.setLoadWithOverviewMode(true); // 缩放至屏幕的大小    webview.setWebChromeClient(new WebChromeClient() );    webview.loadUrl(contextLink);// 加载链接

注意

以上可以正常播放视频了,但是webview的页面都finish了居然还能听到视频播放的声音,
于是又查了下发现webview的 onResume方法可以继续播放,onPause可以暂停播放,
但是这两个方法都是在Added in API level 11添加的,所以需要用反射来完成。

 // web view  退出时 仍在播放, 停止播放    @Override    protected void onPause() {        try {            webview.getClass().getMethod("onPause").invoke(webview, (Object[]) null);        }  catch (Exception e) {            e.printStackTrace();        }        super.onPause();    }
 //继续播放:从断开处继续播放    @Override    protected void onResume() {        try {            webview.getClass().getMethod("onResume").invoke(webview, (Object[]) null);        } catch (Exception e) {            e.printStackTrace();        }        super.onResume();    }
0 2