所有文档

          文档服务 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 *;
          }
          上一篇
          简介
          下一篇
          常见问题