com.herewhite.sdk.Room class 参考
适用版本:Whiteboard Android SDK 2.16.134。
Room 类,用于操作互动白板实时房间。
父类:Displayer;继承接口详见父类。
状态读取
Java 非公开字段通过对应 getter/setter 访问;可选包装类型未设置时通常不写入 JSON。初值包含字段声明及无参构造中的直接赋值;其他构造参数以签名为准。
通过 getRoomPhase、getRoomState、isWritable 等公开方法读取状态,字段含义以对应方法为准。
| 公开成员签名 | |
| Boolean | getDisconnectedBySelf () |
| Boolean | getWritable () |
| Long | getObserverId () |
| void | copy () |
| void | paste () |
| void | duplicate () |
| void | deleteOperation () |
| void | disableSerialization (boolean disable) |
| void | redo () |
| void | undo () |
| void | setViewMode (ViewMode viewMode) |
| void | disconnect () |
| void | disconnect (Promise<Object> promise) |
| void | insertImage (ImageInformation imageInfo) |
| void | completeImageUpload (String uuid, String url) |
| void | insertImage (ImageInformationWithUrl imageInformationWithUrl) |
| void | insertText (int x, int y, String text) |
| void | insertText (int x, int y, String text, Promise<String> promise) |
| void | updateText (String id, String text) |
| GlobalState | getGlobalState () |
| void | setGlobalState (GlobalState globalState) |
| void | getGlobalState (Promise<GlobalState> promise) |
| MemberState | getMemberState () |
| void | setMemberState (MemberState memberState) |
| void | getMemberState (Promise<MemberState> promise) |
| RoomMember[] | getRoomMembers () |
| void | getRoomMembers (Promise<RoomMember[]> promise) |
| BroadcastState | getBroadcastState () |
| void | getBroadcastState (Promise<BroadcastState> promise) |
| SceneState | getSceneState () |
| void | getSceneState (Promise<SceneState> promise) |
| Scene[] | getScenes () |
| void | getScenes (Promise<Scene[]> promise) |
| double | getZoomScale () |
| void | getZoomScale (Promise<Number> promise) |
| RoomPhase | getRoomPhase () |
| void | getRoomPhase (Promise<RoomPhase> promise) |
| RoomState | getRoomState () |
| void | getRoomState (Promise<RoomState> promise) |
| void | setScenePath (String path) |
| void | setScenePath (String path, Promise<Boolean> promise) |
| void | setSceneIndex (Integer index, Promise<Boolean> promise) |
| void | putScenes (String dir, Scene[] scenes, int index) |
| void | moveScene (String sourcePath, String targetDirOrPath) |
| void | removeScenes (String dirOrPath) |
| void | cleanScene (boolean retainPpt) |
| void | pptNextStep () |
| void | pptPreviousStep () |
| void | addPage () |
| void | addPage (Scene scene, boolean after) |
| void | removePage (Promise<Boolean> promise) |
| void | removePage (int index, Promise<Boolean> promise) |
| void | nextPage (Promise<Boolean> promise) |
| void | prevPage (Promise<Boolean> promise) |
| void | zoomChange (double scale) |
| void | debugInfo (Promise<JSONObject> promise) |
| void | disableOperations (boolean disableOperations) |
| void | setWritable (boolean writable, Promise<Boolean> promise) |
| void | disableEraseImage (boolean disable) |
| void | disableCameraTransform (boolean disableCameraTransform) |
| void | disableDeviceInputs (boolean disableOperations) |
| void | disableWindowOperation (boolean disableWindowOperation) |
| void | setWindowBoxState (String state) |
| Double | getTimeDelay () |
| void | setTimeDelay (double delaySec) |
| void | syncBlockTimestamp (long utcMs) |
| void | dispatchMagixEvent (AkkoEvent eventEntry) |
| void | addApp (WindowAppParam appParam, Promise<String> promise) |
| void | fitOriginSizeAndCamera () |
| void | closeApp (String appId, Promise<Boolean> promise) |
| void | focusApp (String appId) |
| void | focusApp (String appId, Promise<Boolean> promise) |
| void | queryApp (String appId, Promise<WindowAppSyncAttrs> promise) |
| void | queryAllApps (Promise<Map<String, WindowAppSyncAttrs>> promise) |
| void | setWindowManagerAttributes (String attributes) |
| void | setContainerSizeRatio (float ratio) |
| void | setPrefersColorScheme (WindowPrefersColorScheme colorScheme) |
| void | dispatchDocsEvent (WindowDocsEvent docsEvent, Promise<DispatchDocsEventResult> promise) |
| void | getPageState (WindowPageStateOptions options, Promise<UnifiedPageState> promise) |
| void | getPageState (Promise<UnifiedPageState> promise) |
| void | querySlidePageState (Promise<SlidePageState> promise) |
| void | querySlidePageState (String appId, Promise<SlidePageState> promise) |
| void | setSyncMode (boolean useSyncMode) |
| RoomDelegate | getRoomDelegate () |
变量说明
函数说明
getDisconnectedBySelf()
| Boolean getDisconnectedBySelf() |
获取用户是否主动断开与白板房间的连接。
该方法可以避免白板 SDK 反复重连,用户不断重新加入房间。
getWritable()
| Boolean getWritable() |
获取本地用户在当前互动白板实时房间是否为互动模式。
返回值
true:本地用户在当前互动白板实时房间为互动模式,即可对白板进行读写操作。false: 本地用户在当前互动白板实时房间为订阅模式,即对白板只能进行读取操作。
getObserverId()
copy()
| void copy() |
paste()
| void paste() |
粘贴复制的内容。
该方法会将 copy 方法复制的内容粘贴到白板中(用户当前的视角中间)。
- 该方法仅当
disableSerialization设为false时生效。 - 多次调用该方法时,不能保证粘贴的内容每次都在用户当前的视角中间,可能会出现随机偏移。
duplicate()
| void duplicate() |
复制并粘贴选中的内容。
该方法会将选中的内容复制并粘贴到白板中(用户当前的视角中间)。
- 该方法仅当
disableSerialization设为false时生效。 - 多次调用该方法时,不能保证粘贴的内容每次都在用户当前的视角中间,可能会出现随机偏移。
deleteOperation()
| void deleteOperation() |
删除选中的内容。
disableSerialization()
| void disableSerialization(boolean disable) |
开启/禁止本地序列化。
设置 disableSerialization(true) 后,以下方法将不生效:
redoundoduplicatecopypaste
- 警告
- 如果要设置
disableSerialization(false),必须确保同一房间内所有用户使用的 SDK 满足以下版本要求,否则会导致 app 客户端崩溃。- Web SDK 2.9.3 或之后版本
- Android SDK 2.9.3 或之后版本
- iOS SDK 2.9.3 或之后版本
参数
| 参数名 | 描述 |
|---|---|
disable | 是否禁止本地序列化:
|
redo()
| void redo() |
undo()
| void undo() |
setViewMode()
| void setViewMode(ViewMode viewMode) |
切换视角模式。
互动白板实时房间支持对用户设置以下视角模式:
Broadcaster: 主播模式。Follower:跟随模式。Freedom:(默认)自由模式。
该方法的设置会影响房间内所有用户的视角模式:
- 当房间内不存在主播模式的用户时,所有用户的视角都默认为自由模式。
- 当一个用户的视角设置为主播模式后,房间内其他所有用户(包括新加入房间的用户)的视角会被自动设置为跟随模式。
- 当跟随模式的用户进行白板操作时,其视角会自动切换为自由模式。你可以调用
disableOperations(true) 禁止跟随模式的用户操作白板,以保证其保持跟随模式。
该方法是异步操作。调用该方法后,你可以使用 getBroadcastState[2/2] 获取最新设置的视角模式。
参数
| 参数名 | 描述 |
|---|---|
viewMode | 视角模式,详见 ViewMode。 |
disconnect()
| void disconnect() |
主动断开与互动白板实时房间实例的连接。
该方法会把与当前房间实例相关的所有资源释放掉。如果要再次加入房间,需要重新调用 joinRoom。
disconnect[2/2]。disconnect()
| void disconnect(Promise<Object> promise) |
主动断开与互动白板实时房间实例的连接。
该方法会把与当前房间实例相关的所有资源释放掉。如果要再次加入房间,需要重新调用 joinRoom。
你可以在该方法中传入 Promise<Object> 接口实例,以获取方法调用结果。
参数
| 参数名 | 描述 |
|---|---|
promise | Promise<Object> 接口实例,详见 Promise。你可以通过该接口获取 disconnect 的调用结果:
|
insertImage()
| void insertImage(ImageInformation imageInfo) |
插入图片显示区域。
SDK 会根据你传入的 ImageInformation 在白板上设置并插入图片的显示区域。 调用该方法后,还需要调用 completeImageUpload 传入图片的 Url 地址,以在该显示区域插入并展示图片。
insertImage 方法同时传入图片信息和图片的 Url 地址,在白板中插入并展示图片。参数
| 参数名 | 描述 |
|---|---|
imageInfo | 图片信息,详见 ImageInformation。 |
completeImageUpload()
| void completeImageUpload(String uuid, String url) |
参数
| 参数名 | 描述 |
|---|---|
uuid | 图片显示区域的 UUID, 即在 insertImage 方法的 ImageInformation 中传入的图片 UUID。 |
url | 图片的 URL 地址。必须确保 app 客户端能访问该 URL,否则无法正常展示图片。 |
insertImage()
| void insertImage(ImageInformationWithUrl imageInformationWithUrl) |
插入并展示图片。
该方法封装了 insertImage 和 completeImageUpload 方法。 你可以在该方法中同时传入图片信息和图片的 URL,直接在白板中插入图片的显示区域并展示图片。
参数
| 参数名 | 描述 |
|---|---|
imageInformationWithUrl | 图片信息及图片的 URL 地址,详见 ImageInformationWithUrl。 |
insertText()
insertText()
updateText()
getGlobalState()
| GlobalState getGlobalState() |
获取房间的全局状态。
- 该方法为同步调用。
- 对于通过
setCustomGlobalStateClass方法设置的自定义GlobalState,在获取后,可以直接进行强转。 - 调用
setGlobalState方法后,可以立刻调用该方法。
返回值
GlobalState。setGlobalState()
| void setGlobalState(GlobalState globalState) |
修改互动白板实时房间的公共全局状态。
实时房间的 globalState 属性为公共全局变量,房间内所有用户都可以读取 globalState,互动模式用户可以修改 globalState。 修改后的 globalState 会立即同步给所有用户。
参数
| 参数名 | 描述 |
|---|---|
globalState | 房间公共全局状态,详见 GlobalState. |
getGlobalState()
| void getGlobalState(Promise<GlobalState> promise) |
获取房间全局状态。
- 弃用:
- 该方法已废弃。请使用
getGlobalState[1/2]。
- 该方法为异步调用。
- 对于通过
setCustomGlobalStateClass方法设置的自定义GlobalState,在获取后,可以直接进行强转。
参数
| 参数名 | 描述 |
|---|---|
promise | Promise<GlobalState> 接口实例,详见 Promise。你可以通过该接口获取 getGlobalState 的调用结果:
|
getMemberState()
setMemberState()
| void setMemberState(MemberState memberState) |
修改房间内的白板工具状态。
调用该方法会立刻更新房间的 MemberState。 你可以调用 getMemberState 获取最新设置的白板工具状态。
参数
| 参数名 | 描述 |
|---|---|
memberState | 需要修改的白板工具状态,详见 MemberState。 |
getMemberState()
| void getMemberState(Promise<MemberState> promise) |
获取当前的白板工具状态。
参数
| 参数名 | 描述 |
|---|---|
promise | Promise<MemberState> 接口实例,详见 Promise。你可以通过该接口获取 getMemberState 的调用结果:
|
getRoomMembers()
| RoomMember[] getRoomMembers() |
获取房间的用户列表。
- 该方法为同步调用。
- 房间的用户列表仅包含互动模式(具有读写权限)的用户,不包含订阅模式(只读权限)的用户。
返回值
RoomMember。getRoomMembers()
| void getRoomMembers(Promise<RoomMember[]> promise) |
获取房间的用户列表。
- 该方法为异步调用。
- 房间的用户列表仅包含互动模式(具有读写权限)的用户,不包含订阅模式(只读权限)的用户。
参数
| 参数名 | 描述 |
|---|---|
promise | Promise<RoomMember[]> 接口实例,详见 Promise。你可以通过该接口获取 getRoomMembers 的调用结果:
|
getBroadcastState()
| BroadcastState getBroadcastState() |
获取用户的视角状态。
- 该方法为同步调用。
- 调用
setViewMode修改用户视角模式后,无法立刻通过getBroadcastState[1/2] 获取最新的用户视角状态。 如果需要立即获取最新的用户视角状态,可以调用getBroadcastState[2/2]。
返回值
BroadcastState。getBroadcastState()
| void getBroadcastState(Promise<BroadcastState> promise) |
获取用户视角状态。
- 该方法为异步调用。
- 调用
setViewMode修改用户视角模式后,无法立刻通过getBroadcastState[1/2] 获取最新的用户视角状态。如果需要 立即获取最新的用户视角状态,可以调用getBroadcastState[2/2]。
参数
| 参数名 | 描述 |
|---|---|
promise | Promise<BroadcastState> 接口实例,详见 Promise。你可以通过该接口获取 getBroadcastState 的调用结果:
|
getSceneState()
| SceneState getSceneState() |
获取房间当前场景目录下的场景状态。
- 该方法为同步调用。
- 调用以下方法修改或新增场景后,无法通过
getSceneState[1/2] 立即获取最新的场景状态。此时,如果需要立即获取最新的场景状态, 可以调用getSceneState[2/2]。
返回值
SceneState。getSceneState()
| void getSceneState(Promise<SceneState> promise) |
获取房间当前场景目录下的场景状态。
- 该方法为异步调用。
- 调用以下方法修改或新增场景后,你可以通过
getSceneState立即获取最新的场景状态。
参数
| 参数名 | 描述 |
|---|---|
promise | Promise<SceneState> 接口实例,详见 Promise。你可以通过该接口获取 getSceneState 的调用结果:
|
getScenes()
| Scene[] getScenes() |
获取房间当前场景目录下的场景列表。
- 该方法为同步调用。
- 调用以下方法修改或新增场景后,无法通过
getScenes[1/2] 立即获取最新的场景列表。 此时,如果需要立即获取最新的场景列表,可以调用getScenes[2/2]。setScenePath[1/2]setScenePath[2/2]putScenes
返回值
Scene。getScenes()
| void getScenes(Promise<Scene[]> promise) |
获取房间当前场景目录下的场景列表。
- 该方法为异步调用。
- 调用以下方法修改或新增场景后,可以调用
getScenes,立即获取最新的场景列表。setScenePath[1/2]setScenePath[2/2]putScenes
参数
| 参数名 | 描述 |
|---|---|
promise |
getZoomScale()
| double getZoomScale() |
获取用户当前的视角缩放比例。
- 弃用:
- 该方法已废弃。
- 该方法为同步调用。
- 调用
zoomChange或moveCamera调整视角缩放比例后,无法通过getZoomScale[1/2] 立即获取最新的缩放比例。 此时,如果需要立即获取最新的缩放比例,可以调用getZoomScale[2/2]。
返回值
getZoomScale()
| void getZoomScale(Promise<Number> promise) |
获取当前用户的视角缩放比例。
- 弃用:
- 该方法已废弃。
- 该方法为异步调用。
- 调用
zoomChange或moveCamera调整视角缩放比例后,如果需要立即获取最新的缩放比例,可以调用getZoomScale[2/2]。
参数
| 参数名 | 描述 |
|---|---|
promise | Promise<Number> 接口实例,详见 Promise。你可以通过该接口获取 getZoomScale 的调用结果:
|
getRoomPhase()
| RoomPhase getRoomPhase() |
获取房间的连接状态。
- 该方法为同步调用。
- 调用
disconnect[1/2] 或disconnect[2/2] 断开 SDK 与实时房间的连接后,无法立即通过getRoomPhase[1/2] 获取最新的房间连接状态。 此时,你可以调用getRoomPhase[2/2] 立即获取最新的房间连接状态。
返回值
RoomPhase。getRoomPhase()
| void getRoomPhase(Promise<RoomPhase> promise) |
获取房间的连接状态。
- 该方法为异步调用。
- 调用
disconnect[1/2] 或disconnect[2/2] 断开 SDK 与实时房间的连接后,无法立即通过getRoomPhase[1/2] 获取最新的房间连接状态。 此时,你可以调用getRoomPhase[2/2] 立即获取最新的房间连接状态。
参数
| 参数名 | 描述 |
|---|---|
promise |
getRoomState()
| RoomState getRoomState() |
获取房间的所有状态。
- 该方法为同步调用。
- 修改房间的状态属性后,无法立即通过
getRoomState[1/2] 获取最新的房间状态。 此时,如果需要立即获取最新的房间状态,可以调用getRoomState[2/2] 获取。
返回值
RoomState。getRoomState()
| void getRoomState(Promise<RoomState> promise) |
获取房间的所有状态。
- 该方法为异步调用。
- 修改房间的状态属性后,无法立即通过
getRoomState获取最新的房间状态。此时,如果需要立即获取最新的房间状态,可以调用getRoomState[2/2] 获取。
参数
| 参数名 | 描述 |
|---|---|
promise |
setScenePath()
| void setScenePath(String path) |
切换至指定的场景。
方法调用成功后,房间内的所有用户看到的白板都会切换到指定场景。
- 该方法为同步调用。
- 如需获取方法调用回调,请使用
setScenePath[2/2]。
场景切换失败可能有以下原因:
- 路径不合法,请确保场景路径以
/开头,由场景目录和场景名构成。 - 场景路径对应的场景不存在。
- 传入的路径是场景目录的路径,而不是场景路径。
参数
| 参数名 | 描述 |
|---|---|
path | 想要切换到的场景的场景路径,请确保场景路径以 / 开头,由场景目录和场景名构成,例如,/math/classA. |
setScenePath()
| void setScenePath(String path, Promise<Boolean> promise) |
切换至指定的场景。
方法调用成功后,房间内的所有用户看到的白板都会切换到指定场景。
场景切换失败可能有以下原因:
- 路径不合法,请确保场景路径以 "/",由场景目录和场景名构成。
- 场景路径对应的场景不存在。
- 传入的路径是场景目录的路径,而不是场景路径。
参数
| 参数名 | 描述 |
|---|---|
path | 想要切换到的场景的场景路径,请确保场景路径以 "/",由场景目录和场景名构成,例如, /math/classA. |
promise |
setSceneIndex()
putScenes()
| void putScenes(String dir, Scene[] scenes, int index) |
在指定场景目录下插入多个场景。
setScenePath。示例代码
room.putScenes("ppt", new Scene[]{new Scene("page1", new PptPage("https://white-pan.oss-cn-shanghai.aliyuncs.com/101/image/alin-rusu-1239275-unsplash_opt.jpg", 1024d, 768d))}, 0);
room.setScenePath("ppt" + "/page1");
参数
| 参数名 | 描述 |
|---|---|
dir | 场景目录的名称,必须以 / 开头。不能为场景路径。 |
scenes | 由多个场景构成的数组。单个场景的字段详见 Scene。 |
index | 待插入的多个场景中,第一个场景在该场景目录的索引号。如果传入的索引号大于该场景目录已有场景总数,新插入的场景会排在现有场景的最后。场景的索引号从 0 开始。 |
moveScene()
| void moveScene(String sourcePath, String targetDirOrPath) |
移动场景。
成功移动场景后,场景路径也会改变。
- 该方法只能移动场景,不能移动场景目录,即
sourcePath只能是场景路径,不能是场景目录路径。 - 该方法支持改变指定场景在当前所属场景目录下的位置,也支持将指定场景移至其他场景目录。
参数
| 参数名 | 描述 |
|---|---|
sourcePath | 需要移动的场景原路径。必须为场景路径,不能是场景目录的路径。 |
targetDirOrPath | 目标场景目录的路径或目标场景的路径:
|
removeScenes()
| void removeScenes(String dirOrPath) |
删除场景或者场景目录。
- 互动白板实时房间内必须至少有一个场景。当删除所有的场景后,SDK 会自动生成一个路径为
/init初始场景(房间初始化时的默认场景)。 - 如果删除白板当前所在场景,白板会展示被删除场景所在场景目录的最后一个场景
- 如果删除的是场景目录,则该场景目录下的所有场景都会被删除。
- 如果删除的是当前场景所在的场景目录,例如
dirA,SDK 会执行向上递归逻辑选择新的场景作为当前场景,规则如下:- 如果当前场景目录路径下还有其他场景目录,例如
dirB,排在被删除的场景目录dirA后面,则将场景切换至dirB中的第一个场景(index 为 0)。 - 如果当前场景目录路径下
dirA后不存在场景目录,则查看当前场景目录路径下是否存在场景; 如果存在,则将场景切换至当前场景目录路径下的第一个场景(index 为 0)。 - 如果当前场景目录路径下
dirA后没有场景目录,也不存在任何场景,则查看dirA前面是否存在场景目录dirC;如果存在,则选择dirC中的第一个场景(index 为 0)。 SDK 会继续向上递归执行该逻辑,直到找到新的场景。
- 如果当前场景目录路径下还有其他场景目录,例如
参数
| 参数名 | 描述 |
|---|---|
dirOrPath | 场景目录路径或者场景路径。如果传入的是场景目录,则会删除该场景目录下的所有场景。 |
cleanScene()
| void cleanScene(boolean retainPpt) |
清除当前场景的所有内容。
参数
| 参数名 | 描述 |
|---|---|
retainPpt | 是否保留 PPT 内容:
|
pptNextStep()
| void pptNextStep() |
播放动态 PPT 下一页。
当前 PPT 页面的动画已全部执行完成时,SDK 会将场景切换至下一页 PPT。
pptPreviousStep()
| void pptPreviousStep() |
返回动态 PPT 上一页。
当前 PPT 页面的动画全部回退完成时,SDK 会将场景切回至上一页 PPT。
addPage()
| void addPage() |
添加新页面到场景集最后位置
addPage()
| void addPage(Scene scene, boolean after) |
添加新页面
参数
参数
| 参数名 | 描述 |
|---|---|
scene | 场景 |
after | true 时添加到当前页面的下一个页面, false 时添加到最后一页 添加页面之后不自动切换,需要调用 setSceneIndex或者 nextPage 切换页面 |
removePage()
| void removePage(Promise<Boolean> promise) |
删除当前页面,多窗口下限定为主白板场景集当前页面。
removePage()
| void removePage(int index, Promise<Boolean> promise) |
删除当前场景集指定页面,多窗口下限定为主白板场景集下页面
参数
| 参数名 | 描述 |
|---|---|
index | 指定页面索引号。 |
nextPage()
prevPage()
zoomChange()
| void zoomChange(double scale) |
更新视角的缩放比例。
- 弃用:
- 该方法已经废弃。请使用
moveCamera(CameraConfig)。
参数
| 参数名 | 描述 |
|---|---|
scale | 视角的缩放比例。 |
debugInfo()
disableOperations()
| void disableOperations(boolean disableOperations) |
允许/禁止白板响应用户任何操作。
该方法设置是否禁止白板响应用户的操作,包括:
CameraTransform:移动、缩放视角。DeviceInputs:使用白板工具输入。
参数
| 参数名 | 描述 |
|---|---|
disableOperations | 允许/禁止白板响应用户任何操作。
|
setWritable()
disableEraseImage()
| void disableEraseImage(boolean disable) |
关闭/开启橡皮擦擦除图片功能。
参数
| 参数名 | 描述 |
|---|---|
disable | 是否关闭橡皮擦擦除图片功能:
|
disableCameraTransform()
| void disableCameraTransform(boolean disableCameraTransform) |
禁止/允许用户调整(移动或缩放)视角。
参数
| 参数名 | 描述 |
|---|---|
disableCameraTransform | 是否禁止用户调整视角:
|
disableDeviceInputs()
| void disableDeviceInputs(boolean disableOperations) |
禁止/允许用户操作白板工具。
参数
| 参数名 | 描述 |
|---|---|
disableOperations | 是否禁止用户操作白板工具:
|
disableWindowOperation()
| void disableWindowOperation(boolean disableWindowOperation) |
禁止/允许窗口操作。
参数
参数
| 参数名 | 描述 |
|---|---|
disableWindowOperation | 是否禁止窗口操作: - true:禁止窗口操作。 - false:(默认)允许窗口操作。 |
setWindowBoxState()
| void setWindowBoxState(String state) |
设置窗口状态:normal、maximized 或 minimized;强制最大化策略生效时不能进入 normal。
getTimeDelay()
setTimeDelay()
| void setTimeDelay(double delaySec) |
设置本地显示远端白板内容的延时。
调用该方法后,当本地用户接收到远端白板内容时,SDK 会根据你设置的 timeDelay 的值延迟显示白板内容。
在音视频传输延时较大的场景中,如使用 CDN 推送音视频流时,你可以使用该参数延迟显示接收到的远端白板内容,以确保白板内容与音视频同步。
参数
| 参数名 | 描述 |
|---|---|
delaySec | 延时时长,单位为秒。取值必须大于等于 0。默认值为 0。 |
syncBlockTimestamp()
| void syncBlockTimestamp(long utcMs) |
设置本地显示远端白板内容的 Unix 时间戳(ms)。
调用该方法后,SDK 会根据你设置的 timestamp 的值显示接收到的远端白板内容。
在同时订阅音视频流和白板内容的场景中,你可以从音视频流附带的 SEI 帧中获取时间信息, 并调用该方法设置远端白板内容在本地的显示时间,以确保音视频流和白板内容实时同步。
参数
| 参数名 | 描述 |
|---|---|
utcMs | 远端白板内容在本地显示的 Unix 时间戳,单位为毫秒。 |
dispatchMagixEvent()
addApp()
| void addApp(WindowAppParam appParam, Promise<String> promise) |
在多窗口模式添加 App,成功返回 appId;创建失败或焦点未提交进入异步错误路径。添加 App。lazy 模式或最小化状态可先返回 ID;eager 模式尝试等待 setup 并确认焦点,但 setup 异常可仅记录日志,仍可能返回 ID。返回 ID 不保证初始化或渲染成功;创建失败或未取得 ID 的结果按本端错误/空值接口处理。成功返回不能泛化为所有资源渲染完成。originSize 序列化到 attributes.originSize。
fitOriginSizeAndCamera()
| void fitOriginSizeAndCamera() |
启用 MainView originSize 模式后恢复 MainView 参考尺寸和初始相机状态,不修改 Slide/Presentation 的 App 参考尺寸。
closeApp()
| void closeApp(String appId, Promise<Boolean> promise) |
等待内嵌 Window Manager 完成关闭和后继焦点交接后回调。当前 Native 层收到完成回调后固定返回 true,不提供可靠的 false 业务失败结果;需要结合查询和房间状态处理未收到完成的情况。
focusApp()
| void focusApp(String appId) |
切换焦点。可等待的布尔结果表示房间共享 focus、本地 Box 焦点及 zIndex 已提交;false 表示请求被取代或未提交。setup 失败/超时只记录日志,不能用 true 判断课件首帧已就绪。Android 无 Promise 的重载只发出请求。
focusApp()
| void focusApp(String appId, Promise<Boolean> promise) |
切换焦点。可等待的布尔结果表示房间共享 focus、本地 Box 焦点及 zIndex 已提交;false 表示请求被取代或未提交。setup 失败/超时只记录日志,不能用 true 判断课件首帧已就绪。Android 无 Promise 的重载只发出请求。
queryApp()
queryAllApps()
| void queryAllApps(Promise<Map<String, WindowAppSyncAttrs>> promise) |
查询所有小窗应用的信息。
该方法仅在多窗口下有效。
- 如果方法调用成功,则返回一个以应用 ID 为键,包含所有小窗应用信息的字典。详见
WhiteAppSyncAttributes。 - 如果方法调用失败,则返回错误信息。
参数
| 参数名 | 描述 |
|---|---|
promise | Promise<Object> 接口实例,详见 Promise。你可以通过该接口获取方法调用结果: |
setWindowManagerAttributes()
setContainerSizeRatio()
setPrefersColorScheme()
| void setPrefersColorScheme(WindowPrefersColorScheme colorScheme) |
设置设置暗色模式
参数
参数
| 参数名 | 描述 |
|---|---|
colorScheme | WindowPrefersColorScheme |
dispatchDocsEvent()
| void dispatchDocsEvent(WindowDocsEvent docsEvent, Promise<DispatchDocsEventResult> promise) |
统一控制 MainView、DocsViewer、Slide、Presentation。target 可为 mainView 或具体 appId,省略时跟随焦点;page 从 1 开始,scale=1 表示适配尺寸。返回 DispatchDocsEventResult:accepted=true 仅表示命令接收,不保证画面完成;accepted=false 包含 reason/message。DocsViewer 不支持 scalePage。传输/执行异常进入异步错误路径,实际状态通过统一页状态回调观察。
getPageState()
| void getPageState(WindowPageStateOptions options, Promise<UnifiedPageState> promise) |
查询统一页面状态,返回 target、可选 appId、1-based page/pageCount 和可选相对 scale。查询目标用 mainView 或 appId;状态 target 返回 mainView/DocsViewer/Slide/Presentation。
getPageState()
| void getPageState(Promise<UnifiedPageState> promise) |
查询统一页面状态,返回 target、可选 appId、1-based page/pageCount 和可选相对 scale。查询目标用 mainView 或 appId;状态 target 返回 mainView/DocsViewer/Slide/Presentation。
querySlidePageState()
| void querySlidePageState(Promise<SlidePageState> promise) |
查询当前焦点 Slide 或指定 appId 的页码和总页数,页码从 1 开始;统一跨课件控制使用 getPageState。
querySlidePageState()
| void querySlidePageState(String appId, Promise<SlidePageState> promise) |
查询当前焦点 Slide 或指定 appId 的页码和总页数,页码从 1 开始;统一跨课件控制使用 getPageState。
setSyncMode()
| void setSyncMode(boolean useSyncMode) |
默认情况下,所有同步消息会按比较平滑的速度处理,以此保证观感的流畅性。 如果设置此项为 true,则所有消息一经收到立刻处理,从而保证同步的实时性。
参数
| 参数名 | 描述 |
|---|---|
useSyncMode | 是否开启同步模式:
|
getRoomDelegate()
| RoomDelegate getRoomDelegate() |
getRoomDelegate:com.herewhite.sdk.Room 的公开成员。参数和返回类型见下方签名。