2.3.0 或以上
版本的 SDK 支持 Token 鉴权,若您需要升级鉴权方式,可参考 如何从 AppSign 鉴权升级为 Token 鉴权。本节分为四个部分来介绍 ZegoDocsView SDK:
如果要实现在文件上绘制以及多端联动功能,需要引入互动白板功能,详情请参考 ZegoWhiteboardView SDK。
long appID = ; /** 请通过官网注册获取,格式为 123456789L */
String appsign = ; /** 请通过官网注册获取,格式为字符串*/
Application application ; //android app的 application
ZegoDocsViewConfig config = new ZegoDocsViewConfig();
config.setAppID(appID);
config.setAppSign(appsign);
ZegoDocsViewManager.getInstance().init(application,config, new IZegoDocsViewInitListener() {
@Override
public void onInit(int errorCode) {
if (errorCode == 0) {
/** 初始化成功 */
} else {
/** 初始化失败 */
}
}
});
如果您需要切换鉴权方式,请参考 如何从 AppSign 鉴权升级为 Token 鉴权。
监听 Token 过期通知,如果 Token 过期,需要主动更新 Token。
ZegoDocsViewManager.getInstance().setTokenListener(new IZegoDocsViewSetTokenListener() {
@Override
public void onTokenWillExpire(int remainTimeInSecond) {
//从服务器获取新的token
String token = getTokenFromServer();
ZegoDocsViewManager.getInstance().renewToken(token);
}
});
调用 ZegoDocsViewManager 的上传文件方法上传文件到 ZEGO 文件云服务,上传文件成功之后,可获取到该文件的 fileID,开发者可以调用 ZegoDocsView 的 loadFile 接口,传入 fileID 加载该文件。
文件上传分为上传 ZegoDocsViewUploadStateUpload 和格式转换 ZegoDocsViewUploadStateConvert 两个阶段。
{"upload_percent":0.50}
;当前上传 100%,则 "infoMap" 内容为 {"upload_percent":1.00}
。{"upload_fileid":"ekxxxxxxxxv"}
。 上传的文件必须满足相应的规范:
全部规范请参照 概述 - 文件规范。
调用 uploadFile 方法上传普通文件。
String filePath = "";
int renderType = ZegoDocsViewConstants.ZegoDocsViewFileTypeIMG;//例如转换成image格式
ZegoDocsViewManager.getInstance().uploadFile(filePath, renderType, new IZegoDocsViewUploadListener() {
@Override
public void onUpload(int state, int errorCode, @NonNull HashMap<String, Object> infoMap) {
if (errorCode == ZegoDocsViewConstants.ZegoDocsViewSuccess) {
if (state == ZegoDocsViewConstants.ZegoDocsViewUploadStateUpload) {
// 上传中...
float uploadPercent = (float) infoMap.get("upload_percent");
if(uploadPercent == 1f){
/** 正在转码... */
}
} else if (state == ZegoDocsViewConstants.ZegoDocsViewUploadStateConvert){
/** 转换成功 */
String fileID = (String) infoMap.get(ZegoDocsViewConstants.UPLOAD_FILEID);
}
} else {
/** 上传失败 */
}
}
});
通过 ZegoDocsViewCustomH5Config 设置上传 H5 文件的配置参数,并调用 uploadH5File 方法上传 H5 文件。
String filePath = "";
ZegoDocsViewCustomH5Config mH5Config = new ZegoDocsViewCustomH5Config();
mH5Config.height = 960;
mH5Config.width = 540;
mH5Config.pageCount = 5;
ZegoDocsViewManager.getInstance().uploadH5File(filePath, mH5Config, new IZegoDocsViewUploadListener() {
@Override
public void onUpload(int state, int errorCode, @NonNull HashMap<String, Object> infoMap) {
if (errorCode == ZegoDocsViewConstants.ZegoDocsViewSuccess) {
if (state == ZegoDocsViewConstants.ZegoDocsViewUploadStateUpload) {
// 上传中...
float uploadPercent = (float) infoMap.get("upload_percent");
if(uploadPercent == 1f){
/** 正在转码... */
}
} else if (state == ZegoDocsViewConstants.ZegoDocsViewUploadStateConvert){
/** 转换成功 */
String fileID = (String) infoMap.get(ZegoDocsViewConstants.UPLOAD_FILEID);
}
} else {
/** 上传失败 */
}
}
});
调用 loadFile 方法加载文件。
当前 DocsView 已调用 loadFile 接口加载文件后,需要先调用 unloadFile 接口卸载文件,才能再次使用 loadFile 加载文件。
只有之前调用过 loadFile 接口,后续才能调用 reloadFile 接口。
ZegoDocsView zegoDocsView = new ZegoDocsView(context);
addView(zegoDocsView, 0, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT))
String fileID = ""; // 上传文件得到fileID
String authKey = ""; // 用于鉴权,可以传""
//本指引使用docs_view_container作为布局中的view容器(与demo保持一致),容器可为FrameLayout等
zegoDocsView.loadFile(fileID, authKey, new IZegoDocsViewLoadListener() {
@Override
public void onLoadFile(int errorCode) {
if (errorCode == 0) {
/** 加载成功 */
} else {
/** 加载失败 */
}
}
});
调用 flipPage 对文件进行翻页。
ZegoDocsView zegoDocsView = new ZegoDocsView(context);
int page = 1;
zegoDocsView.flipPage(page, new IZegoDocsViewScrollCompleteListener() {
@Override
public void onScrollComplete(boolean isScrollSuccess) {
if (isScrollSuccess) {
// 翻页成功
} else {
// 翻页失败
}
}
});
/** 仅对动态PPT有效 */
int page = 1;
int step = 1;
zegoDocsView.flipPage(page, step, new IZegoDocsViewScrollCompleteListener() {
@Override
public void onScrollComplete(boolean isScrollSuccess) {
if (isScrollSuccess) {
// 翻页成功
} else {
// 翻页失败
}
}
});
加载文件成功后,可调用 scaleDocsView 对文件进行缩放。
ZegoDocsView zegoDocsView = new ZegoDocsView(context);
float scaleFactor = 1.0f;
float scaleOffsetX = 1.0f;
float scaleOffsetY = 1.0f;
zegoDocsView.scaleDocsView(scaleFactor, scaleOffsetX, scaleOffsetY);
加载文件成功后,可调用 getThumbnailUrlList 获取文件缩略图。
ZegoDocsView zegoDocsView = new ZegoDocsView(context);
ArrayList<String> thumbnailUrlList = zegoDocsView.getThumbnailUrlList();
如果开发者上传的文件是 Excel 文件,而且存在多个 sheet 页,可以使用 switchSheet 接口进行 sheet 页切换,sheet 页从 0 开始。
ZegoDocsView zegoDocsView = new ZegoDocsView(context);
int sheetIndex = 1;
zegoDocsView.switchSheet(sheetIndex, new IZegoDocsViewLoadListener() {
@Override
public void onLoadFile(int errorCode) {
boolean isSuccess = errorCode == 0;
}
});
动态 PPT,即文件类型为 “ZegoDocsViewFileTypeDynamicPPTH5” 的文件,这种类型的文件每一页可能会有多个步骤(step)。
如果开发者上传的文件是动态 PPT 文件,可以调用 previousStep 和 nextStep 执行动态 PPT 的上一步和下一步操作,进行动态 PPT 的上下步跳转。动态 PPT 的操作需要在文件加载完成后才能调用。
ZegoDocsView zegoDocsView = new ZegoDocsView(context);
/** 上一步 */
zegoDocsView.previousStep(new IZegoDocsViewScrollCompleteListener() {
@Override
public void onScrollComplete(boolean isScrollSuccess) {
}
});
/** 下一步 */
zegoDocsView.nextStep(new IZegoDocsViewScrollCompleteListener() {
@Override
public void onScrollComplete(boolean isScrollSuccess) {
}
});
开发者可以在文件共享示例项目中,体验文件共享业务,并查看完整的源码和代码逻辑,详情请参考 文件共享 - 下载示例源码。
联系我们
文档反馈