集成腾讯TbsReaderView浏览多种格式的文件

1、在官网上下载SDK,里面包含我们需要的jar,官网地址:https://x5.tencent.com/。

把jar复制放在libs目录下,如图:

图1

2、把SDK里面的liblbs.so库复制到这里,如图:

图2

3、在build.gradle文件添加ndk和sourceSets设置,如图:

图4

(1)//配置so文件

ndk {

abiFilters"armeabi","armeabi-v7a","x86","mips"

}

(2)android节点里,添加:

sourceSets {

main {

jniLibs.srcDirs = ['libs']

}

}

4、使用方法,目前腾讯的浏览支持本地文件的预览。

在主项目的application里必须要初始化QbSdk方法:(有谁能教教我格式化代码复制到,实在太难看!)

/**

* TBS 库初始化

*/

public void initTBSReader(){

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

@Override

public void onCoreInitFinished() {

Log.v("initTBSReader", "========= QbSdk initX5Environment: onCoreInitFinished =========");

        }

@Override

public void onViewInitFinished(boolean b) {

//这里被回调,并且b=true说明内核初始化并可以使用

            Log.v("initTBSReader", "========= QbSdk initX5Environment: 加载内核是否成功 =========b:" + b);

        }

});

    QbSdk.setDownloadWithoutWifi(true);

    // 下载内核的监听

    QbSdk.setTbsListener(new TbsListener() {

@Override

public void onDownloadFinish(int i) {

//tbs内核下载完成回调

            Log.v("initTBSReader", "========= QbSdk onDownloadFinish ======== " + i);

        }

@Override

public void onInstallFinish(int i) {

//内核安装完成回调

            Log.v("initTBSReader", "========= QbSdk onInstallFinish ======== " + i);

        }

@Override

public void onDownloadProgress(int i) {

//下载进度监听

            Log.v("initTBSReader", "========= QbSdk onDownloadProgress ======== " + i);

        }

});

}

5、权限的设置,必须确保有读取文件权限,

6、用法如下:

布局:

Activity的关键代码如下:

/**

* 添加TbsReaderView

*

* @param path

*/

public void addTBSReaderView(String path, String fileName) {

LinearLayout layout = findViewById(R.id.layout);

    TbsReaderView tbsReaderView =new TbsReaderView(this, new TbsReaderView.ReaderCallback() {

@Override

public void onCallBackAction(Integer integer, Object o, Object o1) {

}

});

    layout.addView(tbsReaderView, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));

    String tempFileStr = Environment.getExternalStorageDirectory() +"/TbsReaderTemp";

    Log.v("Test", "======== tempFileStr:" + tempFileStr);

    File tempFile =new File(tempFileStr);

    if (!tempFile.exists()) {

boolean result = tempFile.mkdir();

        if (!result) {

Log.v("Test", "========= TbsReaderTemp 生成失败! ======== ");

        }

}

Bundle bundle =new Bundle();

    bundle.putString("filePath", path);

    bundle.putString("tempPath", tempFile.getAbsolutePath());

    boolean isSupportType = tbsReaderView.preOpen(getFileType(fileName), false);

    if (isSupportType) {

tbsReaderView.openFile(bundle);

    }else {

Toast.makeText(this, "暂不支持该文件的格式", Toast.LENGTH_SHORT).show();

    }

}

/***

* 获取文件类型

*

* @param paramString

* @return

*/

public String getFileType(String paramString) {

String str ="";

    if (TextUtils.isEmpty(paramString)) {

Log.v("getFileType", "paramString---->null");

        return str;

    }

Log.v("getFileType", "paramString:" + paramString);

    int i = paramString.lastIndexOf('.');

    if (i <= -1) {

Log.v("getFileType", "i <= -1");

        return str;

    }

str = paramString.substring(i +1);

    Log.v("getFileType", "paramString.substring(i + 1)------>" + str);

    return str;

}

调用:

大功告成!!!

你可能感兴趣的:(集成腾讯TbsReaderView浏览多种格式的文件)