android webview全屏视频,android WebView 实现播放腾讯视频解决全屏播放问题

解决办法是使用腾讯X5内核

一、在 build.gradle 引入 dependencies

//腾讯内核WebView

api 'com.tencent.tbs.tbssdk:sdk:43903'

二、在 build.gradle 设置 ndk

ndk {

// 设置支持的SO库架构

abiFilters 'armeabi', 'x86', 'armeabi-v7a', 'x86_64', 'arm64-v8a', "mips"

}

三、在 AndroidManifest.xml 设置权限

四、在 AndroidManifest.xml 设置 activity 配置

android:name=".ui.MainActivity"

android:configChanges="orientation|screenSize|keyboardHidden"

android:windowSoftInputMode="stateHidden|adjustResize"

android:hardwareAccelerated="true">

android:name="com.tencent.smtt.sdk.VideoActivity"

android:configChanges="orientation|screenSize|keyboardHidden"

android:exported="false"

android:launchMode="singleTask"

android:alwaysRetainTaskState="true">

五、在 Application 里初始化

//在Application中加载X5内核

private void initX5(){

HashMap map = new HashMap();

map.put(TbsCoreSettings.TBS_SETTINGS_USE_SPEEDY_CLASSLOADER, true);

map.put(TbsCoreSettings.TBS_SETTINGS_USE_DEXLOADER_SERVICE, true);

QbSdk.initTbsSettings(map);

QbSdk.setDownloadWithoutWifi(true);

Log.d("LOG_TAG", "开始加载内核");

QbSdk.initX5Environment(this, new QbSdk.PreInitCallback() {

@Override

public void onCoreInitFinished() {

}

@Override

public void onViewInitFinished(boolean b) {

if (b){

Log.d("LOG_TAG", "内核加载成功");

}else{

Log.d("LOG_TAG", "内核加载失败");

}

}

});

QbSdk.setTbsListener(new TbsListener() {

@Override

public void onDownloadFinish(int i) {

Log.d("LOG_TAG", "下载完成 progress = " + i);

}

@Override

public void onInstallFinish(int i) {

Log.d("LOG_TAG", "正在安装内核 progress = " + i);

}

@Override

public void onDownloadProgress(int i) {

Log.d("LOG_TAG", "已经下载 progress = " + i);

}

});

}

六、更改使用腾讯X5内核 WebView

android:id="@+id/webView"

android:layout_width="fill_parent"

android:layout_height="fill_parent"/>

android:id="@+id/webView"

android:layout_width="fill_parent"

android:layout_height="fill_parent"/>

七、将代码中相关的 import android.webkit.* 改为  com.tencent.smtt.*

具体根据自己代码改

/*import android.webkit.JsResult;

import android.webkit.URLUtil;

import android.webkit.ValueCallback;

import android.webkit.WebChromeClient;

import android.webkit.WebResourceError;

import android.webkit.WebResourceRequest;

import android.webkit.WebSettings;

import android.webkit.WebView;

import android.webkit.WebViewClient;*/

import com.tencent.smtt.export.external.interfaces.IX5WebChromeClient;

import com.tencent.smtt.export.external.interfaces.JsResult;

import com.tencent.smtt.export.external.interfaces.WebResourceError;

import com.tencent.smtt.export.external.interfaces.WebResourceRequest;

import com.tencent.smtt.sdk.URLUtil;

import com.tencent.smtt.sdk.ValueCallback;

import com.tencent.smtt.sdk.WebChromeClient;

import com.tencent.smtt.sdk.WebSettings;

import com.tencent.smtt.sdk.WebView;

八、添加一些配置

下面这些需要哪些根据需要自己配置

//支持设置

WebSettings webSettings = webView.getSettings();

//允许使用js

webSettings.setJavaScriptEnabled(true);

//设置DOM储存

webSettings.setDomStorageEnabled(true);

webSettings.setCacheMode(WebSettings.LOAD_DEFAULT);

//WebView屏幕自适应

webSettings.setUseWideViewPort(true);

//WebView屏幕自适应

webSettings.setLoadWithOverviewMode(true);

//支持缩放

webSettings.setSupportZoom(true);

webSettings.setBuiltInZoomControls(true);

//支持内容重新布局

webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NORMAL);

//多窗口

webSettings.supportMultipleWindows();

//设置可以访问文件

webSettings.setAllowFileAccess(true);

//当webview调用requestFocus时为webview设置节点

webSettings.setNeedInitialFocus(true);

//支持通过JS打开新窗口

webSettings.setJavaScriptCanOpenWindowsAutomatically(true);

//支持自动加载图片

webSettings.setLoadsImagesAutomatically(true);

//关闭硬件加速

//webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

//webView.setLayerType();

//系统选择一种支持半透明(许多alpha位)的格式

getWindow().setFormat(PixelFormat.TRANSLUCENT);

//硬件加速渲染

webView.setDrawingCacheEnabled(true);

webView.setVerticalScrollBarEnabled(false); // 取消Vertical ScrollBar显示

webView.setHorizontalScrollBarEnabled(false); // 取消Horizontal ScrollBar显示

//webView.requestFocus();

* if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {

webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);

}

//webView.setFocusable(false);

webSettings.setDefaultTextEncodingName("GBK");//设置文本编码(根据页面要求设置: utf-8)*/

webView.setWebViewClient(webViewClient);

webView.setWebChromeClient(webChromeClient);

//保存图片

webView.setOnLongClickListener(onLongClickListener);

webView.loadUrl(Constants.URL);

//这两个没有设置可能会导致视频不能全屏

//系统选择一种支持半透明(许多alpha位)的格式

getWindow().setFormat(PixelFormat.TRANSLUCENT);

//硬件加速渲染

webView.setDrawingCacheEnabled(true);

本文地址:https://blog.csdn.net/weixin_41454168/article/details/112554767

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值