集成騰訊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節(jié)點里,添加:

sourceSets {

main {

jniLibs.srcDirs = ['libs']

}

}

4、使用方法,目前騰訊的瀏覽支持本地文件的預覽。

在主項目的application里必須要初始化QbSdk方法:(有誰能教教我格式化代碼復制到簡書,實在太難看?。?/p>

/**

* 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);

? ? // 下載內核的監(jiān)聽

? ? 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) {

//下載進度監(jiān)聽

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

? ? ? ? }

});

}

5、權限的設置,必須確保有讀取文件權限,

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

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;

}

調用:

大功告成?。。?/p>

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容