Ver código fonte

webview视频自动播放

weizhengliang 1 ano atrás
pai
commit
5c7df02d59

+ 1 - 0
android_bed/src/main/AndroidManifest.xml

@@ -88,6 +88,7 @@
             android:screenOrientation="nosensor"
             android:launchMode="singleTask"/>
         <activity android:name="com.wdkl.app.ncs.callingbed.activity.WebviewActivity"
+            android:hardwareAccelerated="true"
             android:turnScreenOn="true"
             android:screenOrientation="nosensor"
             android:launchMode="singleTask"/>

+ 23 - 12
android_bed/src/main/java/com/wdkl/app/ncs/callingbed/activity/WebviewActivity.kt

@@ -46,7 +46,7 @@ class WebviewActivity :BaseActivity<BedWebviewActivityPresenter, WebciewLayBindi
 
     override fun init() {
         val settings: WebSettings = webview.settings
-        webviewSetting(settings);
+        webviewSetting(settings)
         val name = intent.getStringExtra("name") ?: ""
         if (name!=null){
             top_title_tv.setText(name)
@@ -54,6 +54,10 @@ class WebviewActivity :BaseActivity<BedWebviewActivityPresenter, WebciewLayBindi
         val url = intent.getStringExtra("url") ?: ""
         val key = intent.getStringExtra("key") ?: ""
 
+        //视频测试url
+        //https://media.w3.org/2010/05/sintel/trailer.mp4
+        //http://cloud.ruiboyun.net/mp4/vod/9npkladw/mp4/index.mp4
+
         if (!TextUtils.isEmpty(url)){
             if (!TextUtils.isEmpty(key)) {
                 val result = key.replace("&amp;", "&")
@@ -66,15 +70,11 @@ class WebviewActivity :BaseActivity<BedWebviewActivityPresenter, WebciewLayBindi
         } else {
             showMessage("error: empty url!")
         }
-//        webview.loadUrl("https://www.baidu.com/");
-        //带参数
-//        webview.loadDataWithBaseURL(HttpConstant.PATH, content, "text/html", "UTF-8", null);
     }
 
     override fun bindEvent() {
         back_btn.setOnClickListener {
             finish()
-//            push("/callingbed/main")
         }
     }
     override fun onStart() {
@@ -120,6 +120,7 @@ class WebviewActivity :BaseActivity<BedWebviewActivityPresenter, WebciewLayBindi
             this.finish()
         }
     }
+
     private fun webviewSetting(webSettings: WebSettings) {
         pb_web_base.setMax(100) //设置加载进度最大值
         if (Build.VERSION.SDK_INT >= 19) {
@@ -131,12 +132,12 @@ class WebviewActivity :BaseActivity<BedWebviewActivityPresenter, WebciewLayBindi
             webSettings.loadsImagesAutomatically = false //图片自动缩放 关闭
         }
 
-        webview.setLayerType(View.LAYER_TYPE_NONE, null) //硬件解码
+        //webview.setLayerType(View.LAYER_TYPE_NONE, null) //硬件解码
         webSettings.javaScriptEnabled = true // 设置支持javascript脚本
         webSettings.setSupportZoom(true) // 设置可以支持缩放
         webSettings.builtInZoomControls = true // 设置出现缩放工具 是否使用WebView内置的缩放组件,由浮动在窗口上的缩放控制和手势缩放控制组成,默认false
         webSettings.displayZoomControls = false //隐藏缩放工具
-        webSettings.useWideViewPort = false // 扩大比例的缩放
+        webSettings.useWideViewPort = true // 扩大比例的缩放
         webSettings.layoutAlgorithm = WebSettings.LayoutAlgorithm.SINGLE_COLUMN //自适应屏幕
         webSettings.loadWithOverviewMode = true
         webSettings.databaseEnabled = false //
@@ -145,7 +146,16 @@ class WebviewActivity :BaseActivity<BedWebviewActivityPresenter, WebciewLayBindi
         webview.isSaveEnabled = true
         webview.keepScreenOn = true
         webSettings.textZoom = 100
-        // 设置setWebChromeClient对象
+        webSettings.mediaPlaybackRequiresUserGesture = false  //自动播放视频
+        //webSettings.allowContentAccess = true
+        //webSettings.allowFileAccess = true
+        //webSettings.setPluginState(WebSettings.PluginState.ON)
+        //webSettings.setRenderPriority(WebSettings.RenderPriority.HIGH)
+        //webSettings.setAllowUniversalAccessFromFileURLs(true)
+        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
+            webSettings.mixedContentMode = WebSettings.MIXED_CONTENT_ALWAYS_ALLOW
+        }
+
         // 设置setWebChromeClient对象
         webview.webChromeClient = object : WebChromeClient() {
             override fun onReceivedTitle(view: WebView, title: String) {
@@ -158,24 +168,25 @@ class WebviewActivity :BaseActivity<BedWebviewActivityPresenter, WebciewLayBindi
                 super.onProgressChanged(view, newProgress)
             }
         }
+
         //设置此方法可在WebView中打开链接,反之用浏览器打开
         webview.setWebViewClient(object : WebViewClient() {
             override fun onPageFinished(view: WebView?, url: String?) {
                 super.onPageFinished(view, url)
                 if (!webview.getSettings().getLoadsImagesAutomatically()) {
-                    webview.getSettings().setLoadsImagesAutomatically(true);
+                    webview.getSettings().setLoadsImagesAutomatically(true)
                 }
-                pb_web_base.setVisibility(View.GONE);
+                pb_web_base.setVisibility(View.GONE)
             }
 
             override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) {
-                pb_web_base.setVisibility(View.VISIBLE);
+                pb_web_base.setVisibility(View.VISIBLE)
                 super.onPageStarted(view, url, favicon)
             }
 
             override fun shouldOverrideUrlLoading(view: WebView, url: String?): Boolean {
                 // 在当前 WebView 中加载网页,而不是启动系统浏览器
-//                view.loadUrl(url!!)
+                //view.loadUrl(url!!)
                 return true
             }
 

+ 1 - 0
android_bed/src/main/sharedUserId/AndroidManifest.xml

@@ -124,6 +124,7 @@
             android:screenOrientation="nosensor"
             android:launchMode="singleTask"/>
         <activity android:name="com.wdkl.app.ncs.callingbed.activity.WebviewActivity"
+            android:hardwareAccelerated="true"
             android:turnScreenOn="true"
             android:screenOrientation="nosensor"
             android:launchMode="singleTask"/>