1. 程式人生 > >Android WebView載入url網路視訊

Android WebView載入url網路視訊

前言

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();
    }