以下展示了小班课场景的重要流程,可根据流程实现教师端相关功能。
参考以下时序图,搭配 Express Video SDK、ZegoWhiteboardView SDK、ZegoDocsView SDK、ZEGO GO课堂后台服务可实现小班课场景的相关功能,包括课堂管理、实时音视频通讯、互动白板、文件共享等。
以下步骤介绍了GO课堂的基础实现流程,开发者可以据此理解GO课堂的实现方案。
初始化以下 SDK:
详情请参考 ZegoSDKManager.initSDKEnvironment()
方法
登录房间前需要获取GO课堂业务后台的 host 地址并在 BackendApiConstants
类中进行替换。
GO课堂业务后台服务需要用户自己搭建,详情请参考 GO课堂后台服务说明。
使用 JoinActivity
完成登录。登录成功后 App 会跳转至课堂主界面。
教师端和学生端在业务上的主要差别如下:
如果远端创建了多个白板,本端可以通过如下逻辑实现本端白板和远端白板切换同步。
在进入房间后,Express-Video SDK 会调用 ZegoEventHandler 协议中的 onRoomExtraInfoUpdate 方法,根据方法参数获取远端正在显示的白板 ID,然后在白板列表加载完毕后找到对应的 ZegoWhiteboardView 进行展示。
在白板和文件加载完成之后,白板图元和文件的页数需要和远端进行同步。
白板图元对象的同步在 ZegoWhiteboardView SDK 内部已经实现。白板的偏移量和文件页数的同步工作需要开发者使用相应方法自行完成。
由于白板和文件的 contentSize 是一样大的,文件和白板的滚动偏移量必须相同,否则白板上的涂鸦会对应到文件的错误位置。在与白板一一对应的 ZegoWhiteboardViewModel 中可以获取到该白板的横向与纵向偏移百分比。根据百分比偏移量,可以计算出白板和文件视图正确的偏移量,这样可以和远端保持一致。
由于纯白板内部没有页数的概念,需要开发者根据偏移百分比自行定义并计算。例如GO课堂内创建的纯白板为 “5 * 白板view” 尺寸,总共有 5 页。如果纵向偏移百分比为 20%,那么当前处于第 2 页(0.2 * 5 + 1)。
通过 ZegoDocsView 类获取文件的总页数以及当前页码。
如果是带有动画的动态 PPT 文件,需要调用 ZegoDocsView.playAnimation() 方法同步额外的动画信息。
Excel 文件的每个 sheet 都对应着一个白板文件,本端在收到远端的当前的白板 ID 后,可以找到对应的白板和文件视图,调用 DocsView 的 ZegoDocsView.switchSheet() 方法即可完成 sheet 的切换。
API | 实现功能 |
---|---|
login_room | 登录教室。 |
leave_room | 离开课堂。 |
end_teaching | 结束教学。 |
get_attendee_list | 获取在线成员列表。 |
get_join_live_list | 获取连麦成员列表。 |
set_user_info | 设置某个用户设备状态。 |
完整的 API 请参考 GO课堂后台服务说明。
API | 实现功能 |
---|---|
createEngine | 创建引擎单例对象。 |
setEventHandler | 设置事件通知回调。 |
loginRoom | 登录房间,推拉流前必须登录房间。 |
startPublishingStream | 用户将自己本地的音视频流推送到 ZEGO 实时音视频云。 |
stopPublishingStream | 用户停止发送本地的音视频流,结束通话。 |
startPlayingStream | 用户可以从 ZEGO 音视频云拉取远端用户的音视频流进行互通。 |
stopPlayingStream | 用户停止拉取远端的音视频流。 |
完整的 API 请参考 Express Video SDK API 文档 。
API | 实现功能 |
---|---|
init | 初始化 SDK。 |
setConfig | 设置白板相关配置(日志,缓存路径)。 |
setToolType | 设置白板工具。 |
createWhiteboardView | 向服务器申请创建白板并通知其他用户。 |
getWhiteboardViewList | 获取当前房间的所有白板。 |
setWhiteboardManagerListener | 设置白板新增,删除和白板相关错误的监听。 |
setVisibleRegion | 配合 DocsView 使用,根据DocsView的可见区域大小设置白板可见区域大小。 |
scrollTo | 跳转到指定位置,用百分比描述。 |
getWhiteboardViewModel | 获得白板 View 对应的 ViewModel。 |
完整的 API 请参考 互动白板 API 文档 。
API | 实现功能 |
---|---|
init | 用配置类的实例初始化 SDK。 |
uploadFile | 从客户端本地上传文件转码,并存储。 |
getFileID | 获取当前视图对应的 fileID,与 loadFile 传入的 fileID 一致。 |
loadFile | 加载指定的文件,文件内容将被渲染到视图上。 |
flipPage | 跳转到指定页位置。 |
scrollTo | 跳转到指定位置,用百分比描述。 |
scaleDocsView | 缩放。 |
完整的 API 请参考 文件共享 API 文档 。
联系我们
文档反馈