声网 Classroom SDK 通过 Edu Context 为 App 开发者提供实现灵动课堂业务功能的能力。
不同的 Context 代表灵动课堂中不同的业务功能模块,每个 Context 既包含供 App 调用的方法,也会向 App 报告事件回调。
声网 Classroom SDK 提供以下 Context:
ChatContext
提供消息聊天相关能力。
isHost: boolean,
角色是否为教师或助教。
getHistoryChatMessage: (data: {
nextId: string;
sort: number;
})=>Promise<any>,
获取历史聊天消息。
调用示例:
getHistoryChatMeassage({nextId:"idstring", sort: 1})
参数 | 描述 |
---|---|
nextId |
用于分批获取消息。第一次传空字符串。返回结果里有一个 nextId 字段,下一批获取传入该值。 |
sort |
0 : 正序获取历史聊天消息。1 : 倒序获取历史聊天消息。 |
messageList: array,
聊天消息列表。
sendMessage: (message: any) => Promise<{
id: string,
ts: number,
text: any,
account: string,
sender: boolean,
messageId: string,
fromRoomName: string,
}>,
发送聊天消息。
参数 | 描述 |
---|---|
message |
聊天消息。 |
muteChat: () => void,
禁止聊天。
unmuteChat: () => void,
取消禁止聊天。
chatCollapse: boolean,
是否折叠聊天消息框。
toggleChatMinimize(): void
切换折叠状态。
unreadMessageCount: number,
未读消息数量。
canChatting: boolean,
聊天功能是否可用。
addChatMessage: (args: any) => void
向本地消息列表新增一条聊天消息。
参数 | 描述 |
---|---|
args |
传入发送聊天消息方法中返回的对象。 |
cpuUsage: number,
自 v1.1.5 起新增。
CPU 使用情况。
networkQuality: string,
自 v1.1.5 起新增。
网络质量。
networkLatency: number,
自 v1.1.5 起新增。
网络延时(毫秒)。
packetLostRate: number,
自 v1.1.5 起新增。
网络丢包率(百分比)。
rxPacketLossRate: number;
自 v1.1.5 起新增。
音视频下行丢包率。
txPacketLossRate: number;
自 v1.1.5 起新增。
音视频上行丢包率。
rxNetworkQuality: string;
自 v1.1.5 起新增。
下行网络质量。
txNetworkQuality: string;
自 v1.1.5 起新增。
上行网络质量。
liveClassStatus: {
classState: string;
duration: number;
};
自 v1.1.5 起新增。
课堂状态。
参数 | 描述 |
---|---|
classState |
课堂状态。 |
duration |
课堂持续时间(秒)。 |
CloudDriveContext
提供课件相关能力。
upsertResources(items: CourseWareItem[]): void;
自 v1.1.5 起新增。
更新课件。
参数 | 描述 |
---|---|
items |
课件对象。 |
allResources: MaterialDataResource[];
自 v1.1.5 起新增。
所有课件。
initCourseWareProgress: number;
自 v1.1.5 起新增。
初始课件加载进度。
initCourseWareLoading: boolean;
自 v1.1.5 起新增。
是否正在加载初始课件。
initCourseWare: MaterialDataResource
自 v1.1.5 起新增。
初始课件。
downloadList: StorageCourseWareItem[],
可下载的课件列表。
openCloudResource: (uuid: string) => Promise<void>,
打开课件。
参数 | 描述 |
---|---|
uuid |
课件 ID。 |
startDownload: (taskUuid: string) => Promise<void>,
开始下载课件。
参数 | 描述 |
---|---|
taskUuid |
课件转换任务 ID。 |
deleteSingle: (taskUuid: string) => Promise<void>,
删除课件。
参数 | 描述 |
---|---|
taskUuid |
课件转换任务 ID。 |
personalResources: MaterialDataResource[],
个人课件列表。
publicResources: MaterialDataResource[],
公共课件列表。
resourcesList: Resource[],
所有课件列表。
refreshCloudResources: () => Promise<void>,
刷新课件列表。
removeMaterialList: (resourceUuids: string[]) => Promise<void>,
删除课件。
参数 | 描述 |
---|---|
resourceUuids |
课件 ID。 |
cancelUpload: () => Promise<void>,
取消上传课件。
doUpload: (payload: any) => Promise<void>,
上传课件。
closeMaterial: (resourceUuid: string) => void,
关闭课件。
GlobalContext
提供全局控制相关能力。
region: string;
自 v1.1.2 起新增。
当前设置的区域。
loading: boolean,
自 v1.1.2 起废弃。声网建议改用
RoomContext
的isJoiningRoom
。
正在加载中。
isFullScreen: boolean,
当前是否全屏。
params: AppStoreInitParams,
课堂初始化参数。
mainPath: string | undefined,
主路由。
language: LanguageEnum,
当前语言。
isJoined: boolean;
自 v1.1.2 起新增。
是否成功加入课堂。
sequenceEventObserver: Subject<any>,
自 v1.1.2 起新增。
灵动课堂事件序列观察器。
toastEventObserver: Subject<any>,
Toast 观察器。
dialogEventObserver: Subject<any>,
Dialogue 观察器。
HandsUpContext
提供举手上台相关能力。
teacherUuid: string,
老师的 ID。
handsUpState: string,
学生的举手状态。
teacherHandsUpState: string,
老师的举手状态。
async studentHandsUp(teacherUuid: string): void
学生举手向老师请求发言。
参数 | 描述 |
---|---|
teacherUuid |
老师的 ID。 |
async studentCancelHandsUp(): void
学生取消举手请求。
handsUpStudentList: array<{userUuid, userName, coVideo}>,
举手学生列表。
coVideoUsers: array,
当前发送视频流的用户列表。
onlineUserCount: number,
在线用户总数(不包含角色名为观众的用户)。
processUserCount: number,
当前发送视频流的用户总数。
async teacherAcceptHandsUp(userUuid: string): void
老师接受学生举手请求。
参数 | 描述 |
---|---|
userUuid |
学生 ID。 |
async teacherRejectHandsUp(userUuid: string): void
老师拒绝学生举手请求。
参数 | 描述 |
---|---|
userUuid |
学生 ID。 |
MediaContext
提供本地媒体设备控制相关能力。
enableMediaEncryption(enabled: boolean, config: any): number;
自 v1.1.5 起新增。
启用媒体流加密。
getAudioRecordingVolume: () => number;
自 v1.1.5 起新增。
获取麦克风采集的声音的音量。
getAudioPlaybackVolume: () => number;ng) => Promise<void>;
自 v1.1.5 起新增。
获取扬声器播放的声音的音量。
isNative: boolean,
本地是否为 Windows 或 macOS 客户端应用。
cpuUsage: number,
自 v1.1.5 起废弃。声网建议改用
ClassroomStatsContext
中的cpuUsage
。
CPU 使用情况。
networkQuality: string,
自 v1.1.5 起废弃。声网建议改用
ClassroomStatsContext
中的networkQuality
。
网络质量。
networkLatency: number,
自 v1.1.5 起废弃。声网建议改用
ClassroomStatsContext
中的networkLatency
。
网络延时(毫秒)。
packetLostRate: number,
自 v1.1.5 起废弃。声网建议改用
ClassroomStatsContext
中的packetLostRate
。
网络丢包率(百分比)。
cameraList: any[],
摄像头列表。
microphoneList: any[],
麦克风列表。
speakerList: any[],
扬声器列表。
cameraId: string,
当前选中的摄像头 ID 。
microphoneId: string,
当前选中的麦克风 ID。
speakerId: string,
当前选中的扬声器 ID。
changeDevice: (deviceType: string, value: any) => Promise<void>,
切换媒体设备(摄像头、麦克风、扬声器)。
参数 | 描述 |
---|---|
deviceType |
设备类型,可设为 camera 、microphone 或 speaker 。 |
value |
设备 ID。 |
changeAudioVolume: (deviceType: string, value: any) => Promise<void>,
调整设备音量。
参数 | 描述 |
---|---|
deviceType |
设备类型,可设为microphone 或 speaker 。 |
value |
音量大小。 |
changeCamera: (deviceId: string) => Promise<void>
自 v1.1.2 起新增。
切换摄像头。
参数 | 描述 |
---|---|
deviceId |
设备 ID。 |
changeMicrophone: (deviceId: string) => Promise<void>
自 v1.1.2 起新增。
切换麦克风。
参数 | 描述 |
---|---|
deviceId |
设备 ID。 |
changeSpeakerVolume: (v: number) => Promise<void>
自 v1.1.2 起新增。
调整扬声器的音量。
changeMicrophoneVolume: (v: number) => Promise<void>
自 v1.1.2 起新增。
调整麦克风的音量。
PretestContext
提供课前检测相关能力,用于检测摄像头、麦克风和扬声器是否正常工作。
isBeauty: boolean;
- 自 v1.1.5 起新增。
- 仅适用于 Electron。
当前是否开启基础美颜。
setBeauty: (isBeauty: boolean) => void;
- 自 v1.1.5 起新增。
- 仅适用于 Electron。
开启/关闭基础美颜功能。
参数 | 描述 |
---|---|
isBeauty |
是否开启美颜功能。 |
whitening: number;
- 自 v1.1.5 起新增。
- 仅适用于 Electron。
当前美白数值。
buffing: number;
- 自 v1.1.5 起新增。
- 仅适用于 Electron。
当前磨皮数值。
ruddy: number;
- 自 v1.1.5 起新增。
- 仅适用于 Electron。
当前红润数值。
setWhitening: (whitening: number) => void;
- 自 v1.1.5 起新增。
- 仅适用于 Electron。
设置美白数值。
参数 | 描述 |
---|---|
whitening |
美白数值。取值范围为 0 到 100,默认值为 70。 |
setBuffing: (buffing: number) => void;
- 自 v1.1.5 起新增。
- 仅适用于 Electron。
设置磨皮数值。
参数 | 描述 |
---|---|
buffing |
磨皮数值。取值范围为 0 到 100,默认值为 50。 |
setRuddy: (ruddy: number) => void;
- 自 v1.1.5 起新增。
- 仅适用于 Electron。
设置红润数值。
参数 | 描述 |
---|---|
ruddy |
红润数值。取值范围为 0 到 100,默认值为 10。 |
changeTestSpeaker: (deviceId: string) => Promise<void>;
自 v1.1.5 起新增。
切换扬声器。
参数 | 描述 |
---|---|
deviceId |
设备 ID。 |
cameraList: array,
摄像头列表。
microphoneList: array,
麦克风列表。
speakerList: array,
扬声器列表。
cameraError: boolean,
摄像头是否正常工作。
microphoneError: boolean,
麦克风是否正常工作。
cameraId: string,
当前选中的摄像头 ID 。
microphoneId: string,
当前选中的麦克风 ID。
speakerId: string,
当前选中的扬声器 ID。
isMirror: boolean,
当前摄像头画面是否镜像。
setMirror(mirror: boolean): void
设置摄像头是否镜像。
microphoneLevel: number,
当前麦克风音量。取值范围为 0 到 20。
async changeTestSpeakerVolume(value: any): void
调整扬声器的音量。
async changeTestMicrophoneVolume(value: any): void
调整麦克风的音量。
async changeTestCamera(deviceId: string): void
切换摄像头。
async changeTestMicrophone(deviceId: string): void
切换麦克风。
async startPretestCamera(): void
开启摄像头。
async startPretestMicrophone(): void
开启麦克风。
async stopPretestCamera(): void
关闭摄像头。
async stopPretestMicrophone():void
关闭麦克风。
RecordingContext
提供录制相关能力。
isRecording: boolean,
当前是否正在录制。
async startRecording(): void
开始录制。
async stopRecording(): void
停止录制。
RoomContext
提供课堂管理相关能力。
joined: boolean;
自 v1.1.5 起新增。
是否成功加入课堂。
startCarousel: ({
range,
type,
interval,
}: {
range: number;
type: number;
interval: number;
}) => Promise<any>;
自 v1.1.5 起新增。
开启学生轮播功能。老师或助教开启此功能后,学生按照指定的时间间隔轮流上台。仅适用于在线互动小班课。如果教室内学生人数小于等于 6,调用该方法后,interval
后,全部学生都会上台但无法轮播。
参数 | 描述 |
---|---|
range |
自动上台的学生范围:1 : 课堂内全部学生。 2 : 全部摄像头非禁用的学生。 |
type |
学生上台顺序: |
interval |
学生上台的时间间隔。默认值为 60,单位为秒。取值范围为 10 到 99。 |
stopCarousel: () => Promise<any>;
自 v1.1.5 起新增。
停止学生自动分批上台功能。
sceneType: number,
房间类型:
0
: 1 对 1 在线互动教学。2
: 互动直播大班课。4
: 在线互动小班课。async destroyRoom(): void
销毁房间。
async joinRoom(): void
加入房间。
async startNativeScreenShareBy(windowId: number): void
通过 Window ID 进行屏幕共享。
参数 | 描述 |
---|---|
windowId |
Window ID。 |
async teacherAcceptHandsUp(userUuid: string): void
将学生踢出课堂并禁止学生再进入该课堂。
参数 | 描述 |
---|---|
userUuid |
学生 ID。 |
async teacherRejectHandsUp(userUuid: string): void
将学生踢出课堂。后续学生还能够再进入课堂。
参数 | 描述 |
---|---|
userUuid |
学生 ID。 |
roomUuid |
课堂 ID。 |
liveClassStatus: {
classState: string;
duration: number;
},
自 v1.1.5 起废弃。声网建议改用
LiveRoomStatsContext
中的liveClassStatus
。
当前课堂状态。
queryCameraDeviceState: (userList: EduUser[], userUuid: string, streamUuid: string) => any;
自 v1.1.2 起新增。
查询摄像头状态。
queryMicrophoneDeviceState: (userList: EduUser[], userUuid: string, streamUuid: string) => any;
自 v1.1.2 起新增。
查询麦克风状态。
isJoiningRoom: boolean,
handsUpStudentList: array<{userUuid, userName, coVideo}>,
举手学生列表。
processUserCount: number,
当前发送视频流的用户总数。
roomInfo: object,
当前课堂信息。
isCourseStart: boolean,
课堂是否开始。
async kickOutOnce(userUuid: string, roomUuid: string): void
将学生踢出课堂一次。后续学生还能够再进入课堂。
参数 | 描述 |
---|---|
userUuid |
学生 ID。 |
roomUuid |
课堂 ID。 |
async kickOutBan(userUuid: string, roomUuid: string): void
将学生踢出课堂并禁止学生再进入该课堂。
参数 | 描述 |
---|---|
userUuid |
学生 ID。 |
roomUuid |
课堂 ID。 |
liveClassStatus: object,
当前课堂状态。
async muteVideo(userUuid: string, isLocal: boolean): void
禁用指定用户的视频。
参数 | 描述 |
---|---|
userUuid |
用户 ID。 |
isLocal |
是否为本地用户。 |
async unmuteVideo(userUuid: string, isLocal: boolean): void
取消禁用指定用户的视频。
参数 | 描述 |
---|---|
userUuid |
用户 ID。 |
isLocal |
是否为本地用户。 |
async muteAudio(userUuid: string, isLocal: boolean): void
禁止指定用户的音频。
参数 | 描述 |
---|---|
userUuid |
用户 ID。 |
isLocal |
是否为本地用户。 |
async unmuteAudio(userUuid: string, isLocal: boolean): void
取消禁止指定用户的音频。
参数 | 描述 |
---|---|
userUuid |
用户 ID。 |
isLocal |
是否为本地用户。 |
ScreenShareContext
提供屏幕共享相关能力。
nativeAppWindowItems: array,
远端屏幕共享流列表。
screenShareStream: object,
本地屏幕共享流信息。
async startOrStopSharing(): void
开始或停止屏幕共享。
StreamListContext
提供流相关能力。
streamList: EduStream[],
全部媒体数据流列表。
teacherStream: any,
教师媒体流列表。
studentStreams: EduMediaStream[],
学生媒体流列表。
onPodiumStudentStreams: EduMediaStream[],
当前上台的学生媒体流列表。
muteAudio: (userUuid: string, isLocal: boolean) => void,
禁用指定用户的音频。
参数 | 描述 |
---|---|
userUuid |
用户 ID。 |
isLocal |
是否为本地用户。 |
unmuteAudio: (userUuid: string, isLocal: boolean) => void,
取消禁用指定用户的音频。
参数 | 描述 |
---|---|
userUuid |
用户 ID。 |
isLocal |
是否为本地用户。 |
muteVideo: (userUuid: string, isLocal: boolean) => void,
禁用指定用户的视频。
参数 | 描述 |
---|---|
userUuid |
用户 ID。 |
isLocal |
是否为本地用户。 |
unmuteVideo: (userUuid: string, isLocal: boolean) => void,
取消禁用指定用户的视频。
参数 | 描述 |
---|---|
userUuid |
用户 ID。 |
isLocal |
是否为本地用户。 |
revokeUserPermission: (userUuid: string) => void,
取消指定用户的白板权限。
参数 | 描述 |
---|---|
userUuid |
用户 ID。 |
localStream: EduStream,
本地用户的媒体数据流。
grantUserPermission: (userUuid: string) => void,
授予指定用户白板权限。
UserListContext
提供用户列表相关能力。
rosterUserList: any[],
当前课堂显示在用户列表中的学生列表。
userList: array,
当前课堂内的所有用户列表。
acceptedUserList: array,
举手请求被老师同意的学生列表。
localUserInfo: EduUser,
自 v1.1.2 起新增。
本地用户信息。
teacherInfo?: EduUser,
自 v1.1.2 起新增。
当前课堂的老师信息。
toggleWhiteboardPermission: (userUuid:string, whiteboardGranted: boolean) => Promise<any>,
自 v1.1.2 起新增。
设置指定用户的白板权限。
参数 | 描述 |
---|---|
userUuid |
用户 ID。 |
whiteboardGranted |
是否授予指定用户白板权限。 |
toggleCamera: (userUuid:string, enabled: boolean) => Promise<any>,
自 v1.1.2 起新增。
开启或关闭指定用户的摄像头。
参数 | 描述 |
---|---|
userUuid |
用户 ID。 |
enabled |
摄像头是否开启。 |
toggleMic: (userUuid:string, enabled: boolean) => Promise<any>,
自 v1.1.2 起新增。
开启或关闭指定用户的麦克风。
参数 | 描述 |
---|---|
userUuid |
用户 ID。 |
enabled |
麦克风是否开启。 |
controlTools: ControlTool[],
自 v1.1.2 起新增。
可用的用户管理工具。
isHost: boolean
自 v1.1.2 起新增。
是否为房主。
kick: (userUuid:string) => Promise<any>,
自 v1.1.2 起新增。
将指定用户踢出房间。
参数 | 描述 |
---|---|
userUuid |
用户 ID。 |
BoardContext
提供白板相关能力。
boardConnectionState: string;
自 v1.1.5 起新增。
白板连接状态。
joinBoard: () => Promise<any>;
自 v1.1.5 起新增。
加入白板房间。
leaveBoard: () => Promise<any>;
自 v1.1.5 起新增。
离开白板房间。
room: object,
白板房间对象。
zoomValue: number,
白板缩放的值。
currentPage: number,
当前白板页数。
totalPage: number,
白板总页数。
courseWareList: array,
课件列表。
currentColor: string,
当前画笔颜色。
currentStrokeWidth: number,
当前画笔宽度。
hasPermission: boolean,
是否拥有白板权限。
currentSelector: string,
当前白板的选择工具。
lineSelector: string,
当前白板的线条工具。
activeMap: Record<string, boolean>,
默认激活的工具。
ready: boolean,
白板是否准备完毕。
tools: array,
白板基础工具列表。
async changeStroke(value: any): void
修改画笔宽度。
async changeHexColor(colorHex: string): void
修改颜色。
async mountToDOM(dom: HTMLDivElement | null): void
将白板挂载在 DOM 节点上或者卸载白板。
async setTool(tool: string): void
切换工具。
async zoomBoard(type: string): void
放大或缩小白板。
async setZoomScale(operation: string): void
设置放大或缩小的比例。
async changeFooterMenu(itemName: string): void
设置白板跳转到哪一页。
downloadList: array,
可下载的云盘资源列表。
async putSceneByResourceUuid(uuid: string): void
在白板上打开课件。
async startDownload(taskUuid: string): void
开始下载课件。
async updatePen(value: any): void
更新画笔。
boardPenIsActive: boolean,
当前白板使用的工具是否为画笔。
async startOrStopSharing(): void
开始或停止屏幕共享。
setLaserPoint(): void
设置当前工具为激光笔。
resourcesList: array,
课件列表。
async refreshCloudResources(): void
更新课件列表。
async removeMaterialList(resourceUuids: string[]): void
移除课件。
async cancelUpload(): void
取消上传课件。
async doUpload(payload: any): void
上传课件。
async closeMaterial(resourceUuid: string): void
关闭课件。
async installTools(tools: any[]): void
安装工具。
personalResources: array,
老师通过灵动课堂客户端上传的课件列表。
publicResources: array,
教学机构指派的课件列表。
async revokeUserPermission(userUuid: string): void
取消白板授权。
async grantUserPermission(userUuid: string): void
给予指定学生白板权限。
properties: any;
扩展应用的属性。
dependencies: Map<string, any>;
扩展应用的依赖。
localUserInfo: AgoraExtAppUserInfo;
当前课堂的用户相关信息,包含:
userUuid
: 用户 ID。userName
: 用户名称。roleType
: 用户角色。roomInfo: AgoraExtAppRoomInfo;
当前课堂相关信息,包含:
roomUuid
: 课堂 ID。roomName
: 课堂名称。roomType
: 课堂类型。language: string;
扩展应用的语言。
updateRoomProperty: (properties: any, cause: any) => Promise<void>;
更新课堂属性。
参数 | 描述 |
---|---|
properties |
属性。 |
cause |
更新原因。 |
deleteRoomProperties: (properties: string[], cause: any) => Promise<void>;
删除课堂属性。
参数 | 描述 |
---|---|
properties |
属性。 |
cause |
更新原因。 |