伯索开放平台
首页API文档SDK文档伯索官网
首页API文档SDK文档伯索官网
  1. 直播SDK
  • 历史课堂数据回调接入
  • 签名示例
  • 历史课堂转视频接入方式
  • 历史课堂/微课下载接口
  • query参数说明
  • 文档解析接口
  • SDK预解析服务接入说明
  • Web SDK
    • PlasoStyleUpime API说明
    • 云盘接入
    • 直播SDK
      • 快速接入
    • 微课SDK
      • 快速接入
    • 批注SDK
      • 快速接入
  • Android SDK
    • 直播SDK
      • 快速接入
    • 微课SDK
      • 快速接入
    • 批注SDK
      • 快速接入
  • iOS SDK
    • 直播SDK
      • 快速接入
    • 微课SDK
      • 快速接入
    • 批注SDK
      • 快速接入
  • 播放器SDK
    • Web播放器
  • 「伯索云学堂」跳转接入指南
    • 跳转接入指南
  1. 直播SDK

快速接入

📌
Android版本1.60.120

1. 实时课堂集成方式#

1. 项目升级到AndroidX支持库#

项目需要用到AndroidX支持库,如果在使用Android Support库的请迁移,如果已经使用AndroidX请忽略。 迁移可参考下面的说明,或查阅AndroidX迁移指南。
说明:
1.
切换到单独的分支,迁移完成前最好不进行功能开发,然后将代码备份一份,防止迁移失败
2.
检查项目中每个module中support库的依赖,将版本升级到28.0.0,需要将compileSdkVersion升级到28,保证项目正常能编译通过
3.
在Android Studio中Refactor->Migrate to AndroidX完成迁移
4.
编译项目,如果有编译错误,解决即可(如第三方依赖库版本不支持androidx需要升级到新版本,例如ButterKnife)

2. 配置伯索的maven仓库#

在项目的build.gradle或settings.gradle文件中添加伯索的maven仓库。

3. app->build.gradle配置#

在项目的app->build.gradle 中:
①配置minSdkVersion需要大于等于26,targetSdkVersion 大于等于33,
②添加SDK相关的依赖。

4. 实现IResourceProvider#

IResourceProvider是定制化资料中心接口, APP提供该接口的实现,并传入SDK。IResourceProvider实现后我们需要创建一个StyleUpime对象,创建StyleUpime对象需要用到IResourceProvider,IResourceProvider不能为null,后续启动实时课堂需要使用StyleUpime对象。
在signQuery方法中我们需要生成一个query,生成方法参考如下形式:

5. 启动实时课堂#

实时课堂支持配置日志和水印,在启动实时课堂之前我们可以根据自己的需要进行设置,如不需要可以忽略。
UpimeParameter 参数说明:
参数名参数类型是否必须默认值参数说明
appIdString否-应用唯一标识
waterMarkString否-水印
logDirString否-日志路径
logLevelint否-1日志级别 DEBUG: 0 INFO: 1 WARN: 2 ERROR: 3
启动实时课堂时也需要生成一个query,query中包含创建实时课堂所需要的一些参数,query里面如果包含中文字符串,中文字符串必须进行utf8编码,可以参考demo SignHelper里面buildQuery函数的编码方式。 query创建方法参考以下形式:
query参数说明:参数说明表格
query生成完成后需要在启动实时课堂时传给SDK,需要构建一个ClassConfig对象,ClassConfig对象同样需要进行一些参数配置。ClassConfig对象创建完毕后只需要通过StyleUpime对象调用launchLiveClass方法即可启动实时课堂。
ClassConfig参数说明:
参数名参数类型是否必要默认值参数说明
classURLString是-实时课堂配置参数query ,如果query里面有中文字符串,此中文字符串需要编码后放到query里传入。
hostString是-服务地址
userNameString否-当前用户名称
classMemberArrayList<User>否-课堂成员列表
allowLocalPPTboolean否true是否允许在实时课堂中插入本地PPT
enableSendMessageboolean否true消息界面是否显示消息输入框
hideOtherClientboolean否false是否显示学生不在班级的所有学生和助教
endRemindTimeint否0实时课堂添加双减的提示时间,到达这个时间之后,会提示用户 (:秒)
redPacketLimitint否0红包雨个数限制
defaultPermissionint否0会议模式默认权限
supportSelectboolean否true是否支持工具栏选择箭头
openFileModeint否null文件打开模式
toolboxItemsint否-百宝箱工具条目配置(工具请参考UpimeConfig.ToolBoxItem)
enableInteractPptBoolean否false是否开启PPT交互
teachToolTypesint否0教具类型支持的类型(类型请参考UpimeConfig.TeacherToolType)
supportUndoBoolean否false是否支持撤销操作
useNewSmallBoardBoolean否false是否使用新版小黑板
supportHighlighterBoolean否false是否使用荧光笔
forbiddenScreenShotBoolean否false是否防止课堂截屏
enableVoteBoolean否false是否支持投票工具
enableSaveBoardBoolean否false是否支持保存板书功能,如果支持需要对接实现onUpimeBoardSaved这个回调,保存数据到自己三方服务器
chatMsgPopupint否0:本地记录; 1:远端控制开启; 2:远端控制关闭; 默认0,仅对学生生效,老师不受此配置控制学生进入课堂是消息弹框提醒设置

6. 参考代码demo#

以上就是实时课堂SDK的集成步骤,更加详细步骤请参考代码Demo,请点击下载。
使用步骤:
1)下载代码并解压到本地
2)修改build.gradle文件,升级版本到1.53.311
3)修改文件: app/src/main/java/cn/plaso/liveclasssdkdemo/Config.kt, 填入伯索分配的appid和key后即可体验

7. 资料中心接入事项#

本章节说明资料中心两类文件(非预解析、预解析)的接入要点与回调契约,保持原有对接逻辑不变:
非预解析文件:通过 insertObject 直接插入,视 info 类型决定是否触发回调签名(getExtFileName)。
预解析文件:通过 insertObject 插入后,由 SDK 回调 getPreParseFileName 按页/资源后缀返回可访问直链。
通用回调接口(签名与取址):
getExtFileName(非预解析使用)
方法签名(Kotlin):fun getExtFileName(info: Any?, callback: IResourceCallback?)
语义:基于插入时的 info 计算资源直链(含签名),成功回调 callback.onFilePath(realUrl),失败回调 callback.onFilePath(null)。
getPreParseFileName(预解析使用)
方法签名(Kotlin):fun getPreParseFileName(info: Any?, suffix: String?, callback: IResourceCallback?)
语义:基于预解析文件标识(info)与页面后缀(suffix)计算资源直链(含签名),成功回调 callback.onFilePath(realUrl),失败回调 callback.onFilePath(null)。

7.1 非预解析文件#

资料中心打开非预解析文件时,需要创建如下 UpimeObject 并调用 insertObject 将文件插入课堂:
(1) info 传入 String 类型
type 可为 TYPE_PPT、TYPE_DOC、TYPE_XLS、TYPE_PDF、TYPE_AUDIO、TYPE_VIDEO;
info 必须是“可直接访问的 HTTP 地址”(无需额外签名)。
行为:调用 insertObject 后,直接将文件插入白板,不会触发额外回调(无需实现方处理)。
(2) info 传入 List 类型
type 建议用于 TYPE_AUDIO、TYPE_VIDEO;
info 为 List 类型(实现方自定义结构)。
行为:调用 insertObject 插入后会回调 getExtFileName。实现方需在 getExtFileName 中完成签名并返回完整可访问的 HTTP 地址。
getExtFileName 方法与参数约定(Kotlin):
方法签名:fun getExtFileName(info: Any?, callback: IResourceCallback?)
参数说明:
info: 插入文件时 UpimeObject.info 的原始对象。常见做法是包含用于定位与签名的标识信息(例如携带 id 的 List 或其他结构)。
callback:
成功:callback.onFilePath(realUrl)(建议在主线程回调)。
失败:callback.onFilePath(null)(或记录错误后结束,避免长时间无回调)。

7.2 预解析文件#

资料中心打开预解析文件时,需要创建如下 UpimeObject 并调用 insertObject 将文件插入课堂:
行为:调用 insertObject 后,会回调 getPreParseFileName;实现方需在该函数中完成签名并返回完整可访问的 HTTP 地址。
getPreParseFileName 方法与参数约定(Kotlin):
方法签名:fun getPreParseFileName(info: Any?, suffix: String?, callback: IResourceCallback?)
参数说明:
info: 预解析文件的唯一标识。常见形态为 List,包含键 "id":例如 ["parsed", {"id":"abcdef123456"}](推荐)。实现方应优先从 List 中读取 id,据此计算文件地址。
suffix: 资源相对路径/页面后缀,例如:"/1.jpg"、"/index.html"、"/ispring.html"、"/info.json"(用于指示要获取的具体页码或页面文件)。
callback:
成功:callback.onFilePath(realUrl)(建议在主线程回调)。
失败:callback.onFilePath(null)(或记录错误后结束,避免长时间无回调)。
提示:suffix 在参与拼接与请求时通常需要进行 URL 编码;若包含图片处理等查询参数,请整体进行编码后透传到服务端签名。
参考示例代码:(详细代码可参考demo)

8. 对接注意事项#

(1). 在DemoApp.kt文件中传入appId 和appKey 值,详情参考下文例子;签名请通过在服务器中完成,Demo 中只是样例。
(2). AndroidManifest.xml添加下面代码,不然课堂里面截图至相册功能可能会失败
<meta-data
    android:name="ScopedStorage"
    android:value="true" />
(3). targetSdkVersion 设置成 33;

2. 微课集成方式#

1. 项目升级到AndroidX支持库#

项目需要用到AndroidX支持库,如果在使用Android Support库的请迁移,如果已经使用AndroidX请忽略。 迁移可参考下面的说明,或查阅AndroidX迁移指南。
说明:
1.
切换到单独的分支,迁移完成前最好不进行功能开发,然后将代码备份一份,防止迁移失败
2.
检查项目中每个module中support库的依赖,将版本升级到28.0.0,需要将compileSdkVersion升级到28,保证项目正常能编译通过
3.
在Android Studio中Refactor->Migrate to AndroidX完成迁移
4.
编译项目,如果有编译错误,解决即可(如第三方依赖库版本不支持androidx需要升级到新版本,例如ButterKnife)

2. 配置伯索的maven仓库#

在项目的build.gradle或settings.gradle文件中添加伯索的maven仓库。

3. app->build.gradle配置#

在项目的app->build.gradle 中:
①配置minSdkVersion需要大于等于26,targetSdkVersion大于等于33,
②添加SDK相关的依赖。

4. 实现 IResourceProvider#

IResourceProvider是定制化资料中心接口, APP提供该接口的实现,并传入SDK。IResourceProvider实现后我们需要创建一个StyleUpime对象,创建StyleUpime对象需要用到IResourceProvider,IResourceProvider不能为null,后续启动微课需要使用StyleUpime对象。
在signQuery方法中我们需要生成一个query,生成方法参考如下形式:

5. 启动微课#

启动微课需要构建一个MiniLessonConfig对象,MiniLessonConfig对象需要进行一些参数配置。MiniLessonConfig对象创建完毕后只需要通过StyleUpime对象调用launchMiniLesson方法即可启动微课。
MiniLessonConfig参数说明:
参数名参数类型是否必要默认值参数说明
topicString否-微课主题名称
draftPathString是-微课草稿本地保存路径
openFileModeint否null文件打开模式
supportDraftBoolean否true是否支持存为草稿
enableInteractPptBoolean否false是否开启PPT交互
teachToolTypesint否0是否打开教具
supportUndoBoolean否false是否支持撤销操作
recordTypeint否0微课录制类型音频传:1视频传:2
supportHighlighterBoolean否false是否使用荧光笔
forbiddenScreenShotBoolean否false是否防止截屏
litModeint否0点擦为0, 对象擦:1(手写),3(手写+文本框),5(手写+图形),7(手写+文本框+图形)

6. 预览微课#

预览微课只需要通过StyleUpime对象调用playMiniLesson方法,将微课保存的路径传入即可预览微课。

7. 上传微课#

微课内容上传到自己的OSS。

8. 删除微课#

对于编辑状态下的微课需要通过StyleUpime对象调用deleteDraft方法删除,其他状态只需要删除本地微课或已上传到OSS的微课即可。

9. 参考代码demo#

以上就是微课SDK的集成步骤,更加详细步骤请参考代码Demo,请点击下载。
使用步骤:
1)下载代码并解压到本地
2)修改build.gradle文件,升级版本到1.60.120
3)修改文件: app/src/main/java/cn/plaso/liveclasssdkdemo/Config.kt, 填入伯索分配的appid和key后即可体验
修改于 2025-10-28 02:26:58
上一页
快速接入
下一页
快速接入
Built with