腾讯浏览服务TBS官网
主要类:
- TbsUtils
- X5WebView
- JavaScriptFunction
作用:1、初始化X5内核;2、基于X5封装的WebVIew;3、用于与JS交互的接口基类。
集成
1、去官网下载最新的SDK。
注意:
两者无差别,建议下载第一个,因为第二个好像挺更了。
2、将解压后的文件夹中的jar包导入到项目中并进行集成
3、将demo中的so文件也放入项目中,放到 armeabi 目录下,
并在相应的 module 的 build.gradle 文件的 defaultConfig 中加入如下代码:
ndk {
abiFilters "armeabi"
}
如果项目是多 module 的建议在主的 app 的 build.gradle 文件的 defaultConfig 也加入同样的代码。因为如果不加的话,有大概率 so 不会加载。
4、对X5WebVIew进行配置,这与原生WebView配置一样,不在叙述,但要注意所用的东西要来自于 com.tencent.smtt.sdk
注意导包问题
5、权限配置:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!-- 硬件加速对X5视频播放非常重要,建议开启(如果有网页视频播放的话建议开启) -->
<uses-permission android:name="android.permission.GET_TASKS" />
6、Activity 的相应配置
(1)、主题的配置:禁止使用透明,对于视频的全局播放样式会更好(** !!#ff9900 非必须!! **)
<style name="TbsThem" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:windowIsTranslucent">false</item>
</style>
(2)、属性的相应配置
// 开启硬件加速
android:hardwareAccelerated="true"
// 享受页面视频的完整播放体验
android:configChanges="orientation|screenSize|keyboardHidden"
// 避免输入法界面弹出后遮挡输入光标的问题
android:windowSoftInputMode="stateHidden|adjustResize"
(3)、代码中
// 网页中的视频,上屏幕的时候,可能出现闪烁的情况,需要如下设置:Activity在onCreate时需要设置:
getWindow().setFormat(PixelFormat.TRANSLUCENT);
7、缓存配置
// 注意一定要放在WebView加载后,不然只会管理内核的缓存
CookieSyncManager.createInstance(getApplication());
CookieSyncManager.getInstance().sync();
主要类的主要方法介绍
1、TbsUtils
// 初始化TBS
public final static void init(Application application)
// 初始化X5内核(必须)
private final static void initX5Environment(final Application application)
// 初始化监听(非必须)
private final static void initTbsListener()
2、X5WebView
/**
* 设置播放模式
* @param x5Full true表示标准全屏,false表示X5全屏;不设置默认false
* @param lite false:关闭小窗;true:开启小窗;不设置默认true
* @param startType 1:以页面内开始播放,2:以全屏开始播放;不设置默认:1
*/
public final void setVideoScreenStyleFunc(boolean x5Full, boolean lite, int startType)
// 回退
public final boolean goToBack()
3、BaseTbsWebViewActivity
/**
* 初始化X5WebView
* @param frameLayout 父容器
* @param url 加载地址
* @param jsFun JS回调
* @param jsParams JS参数名
*/
protected final void initX5WebView(FrameLayout frameLayout, String url,JavaScriptFunction jsFun, String jsParams)
/**
* 设置加载url
* @param url
*/
public final void x5WebViewLoadUrl(String url)
/**
* 设置WebViewClient
* @param client
*/
protected final void setWebViweClient(WebViewClient client)
/**
* 设置WebChromeClient
* @param client
*/
protected final void setWebChromeClient(WebChromeClient client)
/**
* @param x5Full true表示标准全屏,false表示X5全屏;不设置默认false
* @param lite false:关闭小窗;true:开启小窗;不设置默认true
* @param startType 1:以页面内开始播放,2:以全屏开始播放;不设置默认:1
*/
public final void setVideoScreenStyleFunc(boolean x5Full, boolean lite, int startType)
// 已判断WebView是否回退的Activity finish方法
public void finish()
注意
1、如果TBS是集成在子 module 中,注意不要在其他 module 中直接调用 TBS 库中的方法,因为涉及到WebVIew内核容易报错,而且也不利于管理,建议在封装一层。
2、如果项目分多个 module 记得一定要在 app 的下面加上 加载 ndk 的代码,不然内核会加载失败。
3、建议WebView用动态的方式进行加载,因为它极耗资源,生命周期管理也要注意。
最后
项目地址
https://github.com/KaraShok/MVVM-Android
中的 module_open_file 中,不要忘记给个 star