文档阅读器Android-SDK开发指南
开发环境
请确保下述前提条件已准备就绪:
- 下载最新的文档阅读器Android SDK。
- 准备Android 运行环境:Android 2.2 及以上的所有系统。
- 适配CPU指令集:ARM v7,ARM 64及 Intel X86。
- 申请账号并开通权限: 您需要登录百度智能云,在安全认证页面 获取 Access Key (AK)。SDK 认证时必须传入 AK 参数。
- 上传文档并确保文档已转码成功后,通过API调用阅读文档接口或通过DOC Java SDK调用readDocument方法,获取docId,host,token三个变量。
-
集成添加播放器 SDK 到 App 工程:
(1) 创建Android工程。
(2) 将 SDK 中的 Jar 包添加到 App 工程的 libs 目录下,并在工程属性中设置依赖此 Jar 包。
(3) 将assets文件夹中的内容复制到您工程的assets目录下;
(4) 参考demo工程与该文档,学习sdk的使用。
-
权限声明
请您在的 Android App 的 AndroidManifest.xml 中声明如下权限:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" />
文档在线播放
准备BDocInfo
/**
* 特注:因token有时间限制,以下字段请填写为您自己的信息,否则文档无法显示。
*/
String host = "BCEDOC"; // 百度智能云传回的host
String docId = "doc-gkjraanw4f89uu5"; // 百度智能云传回的docId
String docType = "doc"; // 百度智能云传回的文档类型 doc/ppt/ppts等
String token = "TOKEN"; // 百度智能云传回的token
String thisDocDir = ""; // 指定为空串""表示在线浏览
int totalPage = 3; // 总页数,必须准确填写 否则在离线浏览时会有问题
String docTitle = "百度智能云文档服务";
int startPage = 1; // 起始浏览页,最小值为1,请不要填入小于1的值
BDocInfo docInfo = new BDocInfo(host, docId, docType, token)
.setLocalFileDir(thisDocDir)
.setTotalPage(totalPage)
.setDocTitle(docTitle)
.setStartPage(startPage);
准备视图控件
xml方式引入播放控件:
<com.baidu.bdocreader.BDocView
android:id="@+id/dv_doc"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
BDocView mDocView = (BDocView) findViewById(R.id.dv_doc);
加载文档
设置回调接口并加载文档
mDocView.setOnDocLoadStateListener(new OnDocLoadStateListener() {
@Override
public void onDocLoadComplete() {
Log.d("test", "onDocLoadComplete");
}
@Override
public void onDocLoadFailed(String errorDesc) {
// errorDesc format: ERROR_XXXX_DESC(code=xxxxx)
Log.d("test", "onDocLoadFailed errorDesc=" + errorDesc);
}
@Override
public void onCurrentPageChanged(int currentPage) {
// 记录当前页面
Log.i("test", "currentPage = " + currentPage);
}
});
// 加载文档
mDocView.loadDoc(docInfo);
阅读设置
调整字号大小
mDocView.setFontSize(fontSize); // fontSize为float类型,取值范围(0,2]
设置起始页
如果要用户在下一次阅读时,从之前的位置继续阅读,可以设置阅读起始页面。
- 设置:BDocInfo类中的startPage,可以设置起始页,页数从1开始。
- 存储:通过加载文档 onCurrentPageChanged 接口可以回调当前用户翻页动作。
设置文档预览
文档阅读器可以仅预览前几页的内容,请确保在docView.loadDoc
之前调用。
docInfo.enablePagePreview(2); // 仅允许用户预览文档的前2页;
docInfo.disablePagePreview()
表示默认不预览,即用户可查看完整文档。
文档下载
下载管理
文档下载管理主要通过 DocDownloadManager 单例类来进行,如开始(恢复)下载:
DocDownloadManager.getInstance(context, userName)
.startOrResumeDownloader(docInfo.getDocId(),
docInfo.getToken(),
docInfo.getHost(),
observer);
注意:
userName
仅用于隔离App内不同用户的文档存储路径,故只要传入可区分的字符串即可,如:md5(realUserName),若您的App不涉及用户登录逻辑,则将userName传入固定字符串即可。
DocDownloadManager
单例类的下载操作方法如下表:
方法名 | 传入参数 | 备注 |
---|---|---|
startOrResumeDownloader(String docId, String token, String host, DocDownloadObserver observer) | docId 文档IDtoken 私有密钥host 百度智能云传回的hostobserver 下载观察者,回调下载状态与进度 |
开始或继续下载 |
pauseDownloader(String docId) | docId 文档ID |
暂停下载 |
deleteDownloader(String docId) | docId 文档ID |
删除该下载, 会移除该DocId的所有下载记录与本地文件 |
stopAll() | - | 暂停所有下载,一般用于退出应用或用户登出时 |
changeMaxDownloadingItems(int maxItems) | maxItems 最大并行下载数 |
默认为5,可接受 (0,10]的值 |
DocDownloadManager
单例类的获取下载对象方法如下表:
方法名 | 传入参数 | 返回类型 |
---|---|---|
getDocDownloadableItemByDocId(String docId) | docId 文档ID |
DocDownloadableItem类 |
getAllDocDownloadableItems() | 无 | HashMap\<String, DocDownloadableItem> 所有下载项,key为docId |
下载状态回调
下载管理中的观察者为DocDownloadObserver类,您需要创建该类的子类,并在继承自该类的 update(DocDownloadableItem item) 方法中更新下载的信息。
其中,DocDownloadableItem
类具有以下方法:
方法名 | 返回值 | 备注 |
---|---|---|
getDocId() | String类型,文档ID | - |
getLocalAbsolutePath() | String类型,本地下载路径 | 该路径由下载器产生,离线播放时需要您回填到BDocInfo类中 |
getStatus() | DownloadStatus枚举类型,下载状态 | 下载状态枚举为DOWNLOADING 下载中PAUSED 已暂停COMPLETED 下载完成ERROR 下载失败,可通过错误码判断原因DELETED 删除,仅在删除下载时回调一次,后续item就被移除了PENDING 等待下载,可作为下载中 状态的一种 |
getProgress() | float类型,下载百分比 | 取值范围[0,100] |
getErrorCode() | int类型,错误码 | 下载状态为DownloadStatus.ERROR时,该值有效,取值为:DocDownloadableItem.ERROR_CODE_NETWORK_FAILED 网络连接有问题ERROR_CODE_FETCH_ZIPURL_FAILED 获取下载zip包失败ERROR_CODE_ZIPSERVER_CODE_NOT_2XX 服务器返回非200/206之类的状态码ERROR_CODE_SDCARD_UNMOUNTED sd卡不可读写ERROR_CODE_DOWNLOAD_ZIPFILE_FAILED 下载zip包失败,非以上原因导致的失败ERROR_CODE_DOWNLOAD_INVALID_TOKEN token无效 |
离线播放
将下载完成的路径设置到BDocInfo中:
String locaDirForThisDoc = downloader.getLocalAbsolutePath();
docInfo.setLocalFileDir(locaDirForThisDoc);
设置完成后,操作请参考文档在线播放。
防混淆
-keep class com.baidu.bdocreader.** {
public *;
}