安卓项目实战之:app展示word、excel、pdf、ppt等文件功能和腾讯TBS介绍

前言

有的app可能会有这样的需求,需要在app中打开本地的word,excel等文档进行查看,我们在面对这样的需求的时候可能会一头雾水,不知道怎么来实现,这里给大家提供一种解决方案,那就是使用腾讯的浏览服务TBS(Tencent Browsing Service),TBS功能强大,查看文件只是其众多功能中的冰山一角,本文将带你一起揭开它的神奇面纱,你值得拥有!

为什么会有TBS?

腾讯TBS官网上的原话:“移动互联网时代,Web成为各超级App的通用基础技术。Web浏览不再局限于传统浏览器,相反已经进入绝大部分App的各类应用场景”。
上面所说的即就是腾讯TBS推出时的市场背景,其中讲的web浏览在app端就是使用WebView进行网页内容的浏览。
众所周知,安卓传统系统内核(WebView)存在适配成本高、不安全、不稳定、耗流量、速度慢、视频播放差、文件能力差等问题,这是移动应用开发商在进行Hybrid App开发时普遍面临的难题,针对以上问题,腾讯整合底层浏览技术和其平台资源及能力,为我们提供了一套更加全面的浏览解决方案,即TBS,至此TBS应运而生,其实我们可以这样理解:TBS就是为我们封装了一个功能更加强大的WebView:com.tencent.smtt.sdk.WebView。

TBS简介

系统原生的WebView用的是WebKit内核,4.4后使基于的是Chrome内核,而腾讯浏览服务TBS是基于腾讯X5内核的,TBS能够有效解决传统移动web技术面临的普遍问题,同时能极大扩展应用(Hybrid App)内浏览场景的服务能力,如果你的手机有安装QQ、微信、QQ浏览器等等QQ的产品, 这个内核就已经是已经安装到手机上了,TBS跟传统的WebView相比,具有以下优点:

  • 速度快:相比系统webview的网页打开速度有30+%的提升;
  • 省流量:使用云端优化技术使流量节省20+%;
  • 更安全:安全问题可以在24小时内修复;
  • 更稳定:经过亿级用户的使用考验,CRASH率低于0.15%;
  • 兼容好:无系统内核的碎片化问题,更少的兼容性问题;
  • 体验优:支持夜间模式、适屏排版、字体设置等浏览增强功能;
  • 功能全:在Html5、ES6上有更完整支持;
  • 更强大:集成强大的视频播放器,支持视频格式远多于系统webview;
  • 视频和文件格式的支持x5内核多于系统内核
  • 防劫持是x5内核的一大亮点

TBS 虽然核心在于提供一套 SDK 解决传统 WebView 的诸多使用问题。但是,利用其增强浏览能力,我们还能够使用这套 SDK 实现应用内的文件浏览功能、视频播放功能等。更多详细功能以及关于这些优点的详细讲解参见官方文档:https://x5.tencent.com/tbs/product/tbs.html
我们在这里主要提一下TBS的文件浏览服务能力支持,见下文。

TBS运行环境支持

1.手机ROM版本高于或等于2.2版本
2.手机RAM大于500M,该RAM值通过手机 /proc/meminfo 文件的MemTotal动态获取

注:如果不满足上述条件,SDK会自动切换到系统WebView,SDK使用者不用关心该切换过程。

TBS文件浏览服务支持

1.文件服务-格式支持
APP在接入文件服务后,即可支持主流9种格式。升级文件服务后,可支持46种文件格式。为用户提供最全的文件浏览支持!
在这里插入图片描述
同时支持26种视频格式。

2.文件服务-文件查看&文件管理器
在文件浏览器基础上,提供最近文件打开、文件管理等个人文件管理。文件管理能力,对本地文件进行智能分类,以直观的宫格形式展示给用户,美观、高效。
在这里插入图片描述
3.文件服务-文档编辑和预览
为文档用户,提供更细分的能力——xlsx编辑、PPT放映等实用能力,丰富文件浏览能力,提升办公、学习效率。
在这里插入图片描述

TBS的集成

1.首先下载最新的SDK
SDK下载地址:https://x5.tencent.com/tbs/sdk.html
在这里插入图片描述
上图为官网提供的两种SDK的区别,其中所说的两种文件预览的方式是指:
1.使用TbsReaderView进行文件的预览(完整版sdk只支持该方式)
2.使用QbSdk的openFileReader进行文件的预览(完整版+文件能力sdk同时支持这两种方式)
此处我们下载Android SDK(完整版) ,里面包含所需要的jar包以及官方demo,我们所要做的是:
1.1.将jar包放到项目的lib文件夹,右键add as library
在这里插入图片描述
1.2.直接复制Demo里面的文件夹jniLibs,到项目的src/main/jniLibs。
在这里插入图片描述
注意:此处需要对.so文件进行配置,由于X5暂时不提供64位so文件,但是现在绝大部分手机都是64位的,所以为了保证64位手机能正常加载x5内核,需要进行如下配置:
首先:在app的build.gradle文件的android{}中的defaultConfig{}里(如果没有defaultConfig{}则手动添加)添加如下配置: ndk{abiFilters “armeabi”},如果配置后编译报错,那么需要在gradle.properties文件中加上Android.useDeprecatedNdk=true;

defaultConfig { 
...
//配置so文件 
    ndk { 
        abiFilters "armeabi", "armeabi-v7a", "x86", "mips"
        }
}

2.添加权限

<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" />

3.初始化x5内核
App 在启动后(例如在 Application 的 onCreate 中)立刻调用 QbSdk 的预加载接口 initX5Environment ,可参考接入示例,第一个参数传入 context,第二个参数传入 callback,不需要 callback 的可以传入 null,initX5Environment 内部会创建一个线程向后台查询当前可用内核版本号,这个函数内是异步执行所以不会阻塞 App 主线程,这个函数内是轻量级执行所以对 App 启动性能没有影响,当 App 后续创建 webview 时就可以首次加载 x5 内核了。

public class BaseApplicatiom extends Application { 
    @Override 
    public void onCreate() { 
        super.onCreate();
        //初始化X5内核 
        QbSdk.initX5Environment(this, new QbSdk.PreInitCallback() { 
            @Override 
            public void onCoreInitFinished() {
            //x5内核初始化完成回调接口,此接口回调并表示已经加载起来了x5,有可能特殊情况下x5内核加载失败,切换到系统内核。 
            } 
            @Override 
            public void onViewInitFinished(boolean b) { 
            //x5內核初始化完成的回调,为true表示x5内核加载成功,否则表示x5内核加载失败,会自动切换到系统内核。 
                Log.e("@@","加载内核是否成功:"+b);
            } 
        });
   } 
}

TBS的使用

使用TBS浏览服务加载网页,比如我们平常遇到的需要加载某些新闻页面或者富文本以及两种文件打开的方式:
https://blog.csdn.net/u013855006/article/details/80420728
TBS高级使用:https://blog.csdn.net/niubitianping/article/details/70919385
TBS进行文件的预览,不支持在线预览。如果需要预览服务器上的文件,我们需要先下载保存,然后再调用TBS的浏览服务进行打开,具体封装以及源码参见:https://www.jianshu.com/p/3f57d640b24d
另一个打开office的示例:https://www.jianshu.com/p/8bd1c4918857

怎么判断他是使用X5内核还是自带内核呢?

显示网页文字时,可通过长按选择文字的标识判断,如下水滴状选择效果是x5webview的标志:
在这里插入图片描述

TBS混淆设置

jar包本来就已经是混淆好的了,如果你打包时候没有添加规则再混淆一遍的话,就会无法使用x5内核了。所以需要添加混淆规则:
下载混淆文件:http://res.imtt.qq.com/TES/proguard.zip
解压后用文本编辑器打开,复制里面的内容到你项目的proguard-rules.pro混淆文件即可。

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智玲君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值