webview腾讯x5内核离线安装

阅读: 评论:0

离线集成腾讯TBS浏览器服务

由于项目需要在一个定制android设备上播放RTSP流视频,设备自带的浏览器内核不支持RTSP流播放,这就导致我使用webview播放h5网址上的视频的时候,无法正常播放视频。在android手机上都是可以播放的,所以猜测是定制android设备自带的浏览器内核兼容性比较差。通过对比,选择使用腾讯x5内核。

由于设备没有联外网的,所以只能通过离线安装的方式。查看了腾讯浏览服务-SDK下载

官网文档,发现流程写的并不清晰,而且没有提供离线安装包,所以这里做个整理。

1.首先需要项目依赖x5 sdk库,通过sdk提供的api安装

api &#t.tbs:tbssdk:44286'

2.下载x5安装包,链接如下

download.csdn/download/shimiso/90412676

3.将下载好的安装包放到项目的assets目录下

将项目目录下的安装包拷贝到sd卡,这里逻辑可以放在启动页或者首页去做,代码如下:

File internalStorage = FilesDir();
String path = AbsolutePath();
copyAssetsToSDCard(this, "tbs", path + "/tbs");
public static void copyAssetsToSDCard(Context context, String sourceFolder, String destinationFolder) {
    AssetManager assetManager = Assets();
    String[] files;
    try {
        // 获取assets文件夹下的所有文件和子文件夹
        files = assetManager.list(sourceFolder);
    } catch (IOException e) {
        e.printStackTrace();
        return;
    }

    // 创建目标文件夹
    File destFolder = new File(destinationFolder);
    if (!ists()) {
        destFolder.mkdirs();
    }

    for (String filename : files) {
        InputStream in = null;
        OutputStream out = null;
        try {
            // 从assets中打开文件
            in = assetManager.open(sourceFolder + "/" + filename);
            // 指定输出目标文件
            File outFile = new File(destinationFolder, filename);
            out = new FileOutputStream(outFile);
            // 将文件内容复制到目标文件
            Log.i("Qbsdk","copy 开始");
            copyFile(in, out);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (in != null) {
                    in.close();
                }
                if (out != null) {
                    out.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

private static void copyFile(InputStream in, OutputStream out) throws IOException {
try {
        byte[] buffer = new byte[1024];
        int read;
        LogUtil.Companion.i("Qbsdk","copy 进行中...");
        while ((read = in.read(buffer)) != -1) {
            out.write(buffer, 0, read);
        }
        LogUtil.Companion.i("Qbsdk","copy 文件成功");
    } catch (Exception e) {
        e.printStackTrace();
        LogUtil.Companion.i("Qbsdk","copy 文件失败"&#Message());
    }
}

4.通过调用腾讯sdk api执行安装任务

QbSdk.installLocalTbsCore(this, 46514, path + "/tbs" + "/tbs_core_046514_20230612114949_nolog_fs_obfs_armeabi_release.tbs");

其中46514表示安装包的版本号。

5.添加监听

QbSdk.setTbsListener(new TbsListener() {
        /**
         * @param stateCode 用户可处理错误码请参考{@t.smtt.sdk.TbsCommonCode}
         */
        @Override
        public void onDownloadFinish(int stateCode) {
            LogUtil.Companion.i(TAG, "onDownloadFinished: " + stateCode);
        }

        /**
         * @param stateCode 用户可处理错误码请参考{@t.smtt.sdk.TbsCommonCode}
         */
        @Override
        public void onInstallFinish(int stateCode) {
            LogUtil.Companion.i(TAG, "安装x5内核完成 重启app: ");
        }

        /**
         * 首次安装应用,会触发内核下载,此时会有内核下载的进度回调。
         * @param progress 0 - 100
         */
        @Override
        public void onDownloadProgress(int progress) {
            LogUtil.Companion.i(TAG, "Core Downloading: " + progress);
        }
    });

6.安装成功之后重启app,查看是否可以加载x5内核

Boolean canLoadX5 = QbSdk.canLoadX5(this); LogUtil.Companion.i("QbSdk", "是否可以加载X5内核: " + canLoadX5);

7.使用

加载成功之后在页面直接使用sdk提供的webview就可以使用x5内核加载h5网页了

&t.smtt.sdk.WebView
  android:id="@+id/webView"
  android:layout_width="match_parent"
  android:layout_height="match_parent"/>

本文发布于:2025-03-21 02:44:00,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/1742496284582650.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:离线   腾讯   内核   webview
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23