文档服务DOC

    文档阅读器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文档ID
    token私有密钥
    host百度智能云传回的host
    observer下载观察者,回调下载状态与进度
    开始或继续下载
    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_UNMOUNTEDsd卡不可读写
    ERROR_CODE_DOWNLOAD_ZIPFILE_FAILED下载zip包失败,非以上原因导致的失败
    ERROR_CODE_DOWNLOAD_INVALID_TOKENtoken无效

    离线播放

    将下载完成的路径设置到BDocInfo中:

    String locaDirForThisDoc = downloader.getLocalAbsolutePath();
    docInfo.setLocalFileDir(locaDirForThisDoc);

    设置完成后,操作请参考文档在线播放

    防混淆

    -keep class com.baidu.bdocreader.** {
      public *;
    }
    上一篇
    简介
    下一篇
    常见问题