# com.herewhite.sdk.Room class 参考 (/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room)

> For AI agents: see the complete documentation index at [llms.txt](/llms.txt).

<a id="details"></a>

## 详细描述 [#详细描述]

适用版本：**Whiteboard Android SDK 2.16.134**。

`Room` 类，用于操作互动白板实时房间。

父类：[Displayer](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-displayer)；继承接口详见父类。

## 状态读取 [#状态读取]

Java 非公开字段通过对应 getter/setter 访问；可选包装类型未设置时通常不写入 JSON。初值包含字段声明及无参构造中的直接赋值；其他构造参数以签名为准。

通过 getRoomPhase、getRoomState、isWritable 等公开方法读取状态，字段含义以对应方法为准。

| 公开成员签名 |  |
| --- | --- |
| Boolean | [getDisconnectedBySelf](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#af0769957f685bc185fcb6d53dec6a5cb) () |
| Boolean | [getWritable](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a3d1f57d33e446dd2002f93e1f3840606) () |
| Long | [getObserverId](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a43f3b32f18de3cd71c95a449deae6a6c) () |
| void | [copy](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#ad06f67470a69830938a901baa8cab2bd) () |
| void | [paste](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a8e1c5006771674ae3b468813e29492f4) () |
| void | [duplicate](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#ab5415f550b394c8b19a121f5d4861426) () |
| void | [deleteOperation](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#ab3a428118f9e090b0e62880d566af261) () |
| void | [disableSerialization](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a7c790db1b2fc9404d39094c5592685e6) (boolean disable) |
| void | [redo](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a9ad047897d74af1590316cc5d338408c) () |
| void | [undo](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a0cd3966f1df8de10f2bb5759fa28998b) () |
| void | [setViewMode](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a62f41d229dee8d67211b3eeaaa46ef6e) (ViewMode viewMode) |
| void | [disconnect](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#ac10c063697e5224ef05d341bb3987004) () |
| void | [disconnect](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#ad8aa1d2ce5b8e6d78094c2a9a3836dfa) (Promise&lt;Object&gt; promise) |
| void | [insertImage](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a195049bf53b03d538c847e0eecf9b679) (ImageInformation imageInfo) |
| void | [completeImageUpload](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a355bbeefe466ac0c2c5b2cdc420ce5dc) (String uuid, String url) |
| void | [insertImage](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a6c85af35615b4d4696717b862fb428bc) (ImageInformationWithUrl imageInformationWithUrl) |
| void | [insertText](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#ad03cd581ff32c16b49dcb4ee61049ba7) (int x, int y, String text) |
| void | [insertText](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a6ed25a156436b44b6405a279aeac6e6d) (int x, int y, String text, Promise&lt;String&gt; promise) |
| void | [updateText](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a6f3389698783fc57286518b370a80357) (String id, String text) |
| GlobalState | [getGlobalState](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#ac21ea599028066b2c54caece51372b77) () |
| void | [setGlobalState](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a50bf9e950f3cbce8b9ed5b250444ea70) (GlobalState globalState) |
| void | [getGlobalState](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a9d92ee9c480ff653ea44fb269740765d) (Promise&lt;GlobalState&gt; promise) |
| MemberState | [getMemberState](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#adb7d0a6430be84c8ff5ce5ae67aeb5ca) () |
| void | [setMemberState](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#ab2d72aca8bef76ded5aa3c3ee873902f) (MemberState memberState) |
| void | [getMemberState](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#ae6d6f0c6ae7385a00efa62732cc04543) (Promise&lt;MemberState&gt; promise) |
| RoomMember[] | [getRoomMembers](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a2388307121c075620ba48f71fa970483) () |
| void | [getRoomMembers](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a48ab27e5a0dbcb3d9cc06ae161cb7b58) (Promise&lt;RoomMember[]&gt; promise) |
| BroadcastState | [getBroadcastState](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#af6f8d5c76a3d331cd1cd9d6f15565976) () |
| void | [getBroadcastState](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#abd40d4f3d60e963105a09eb514ecf29d) (Promise&lt;BroadcastState&gt; promise) |
| SceneState | [getSceneState](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a8a708f07fc9914a6a54a6c18e696ce2d) () |
| void | [getSceneState](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a76bd84717f518dddd9396c61f9e2f606) (Promise&lt;SceneState&gt; promise) |
| Scene[] | [getScenes](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a5a9590e60683101fc8715c606180cd19) () |
| void | [getScenes](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a9d9265ad1fb0e698e0c8b281dfbd66f1) (Promise&lt;Scene[]&gt; promise) |
| double | [getZoomScale](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#ac287ed3712b957412281f1330f7df32c) () |
| void | [getZoomScale](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#aff289f9e1bac68426d93fdfd8f7486e7) (Promise&lt;Number&gt; promise) |
| RoomPhase | [getRoomPhase](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a2c0ef694235dccda2fb92b3ba141880d) () |
| void | [getRoomPhase](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a6759ad742065c0e82592e8a0ed8aabee) (Promise&lt;RoomPhase&gt; promise) |
| RoomState | [getRoomState](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a9578a9ae744eb64d8bd939e3af3b68db) () |
| void | [getRoomState](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a7c00f3eb5374d153b594fb772cf7339f) (Promise&lt;RoomState&gt; promise) |
| void | [setScenePath](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a4dfb1c0aac90cd2678aa773629198b1e) (String path) |
| void | [setScenePath](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#afb89dfcb412caf3377c75522aa3ab6c0) (String path, Promise&lt;Boolean&gt; promise) |
| void | [setSceneIndex](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a003fc53c0744799200fbac3ac6128e1a) (Integer index, Promise&lt;Boolean&gt; promise) |
| void | [putScenes](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#ae2b7a63167b67f28d6a689d618184e4d) (String dir, Scene[] scenes, int index) |
| void | [moveScene](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a7361194cdc471d597921c14d2096e145) (String sourcePath, String targetDirOrPath) |
| void | [removeScenes](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#affd9982f863d1e91168428fa2df1053a) (String dirOrPath) |
| void | [cleanScene](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#ad051bd3599948c161bcb2c983d80ef5a) (boolean retainPpt) |
| void | [pptNextStep](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a2f0b17c6af0f8c2bcaef84ad600e51af) () |
| void | [pptPreviousStep](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#aa54cbba71f9d37d3f00809337015fe03) () |
| void | [addPage](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a566026198b2d988e816e1b6ae7a82fd3) () |
| void | [addPage](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a4028654e92a04b5e209650f58e90f969) (Scene scene, boolean after) |
| void | [removePage](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a045fabaff4ea72af8ef72c04fa070225) (Promise&lt;Boolean&gt; promise) |
| void | [removePage](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a70ef00a6a33a306cab048919218b8f34) (int index, Promise&lt;Boolean&gt; promise) |
| void | [nextPage](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#ab4f0c417f4ad2af1ea9e69715d8a7825) (Promise&lt;Boolean&gt; promise) |
| void | [prevPage](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#ac16b93d99f0acfed5b787053f090c8a3) (Promise&lt;Boolean&gt; promise) |
| void | [zoomChange](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a81fddb80f2f65a70f2f5fe1e5652a5d0) (double scale) |
| void | [debugInfo](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a78cb9ef60e7a4e61696dfc5e8301d064) (Promise&lt;JSONObject&gt; promise) |
| void | [disableOperations](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a6b265bdee91f2d961373d172bb969fe0) (boolean disableOperations) |
| void | [setWritable](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a1cea527622d0cdf3d6eb0b01835b1370) (boolean writable, Promise&lt;Boolean&gt; promise) |
| void | [disableEraseImage](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a4f860e53b4cab0f574b22a2e8fdf235d) (boolean disable) |
| void | [disableCameraTransform](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a0cadc59b5eb670a2361f5befedc90f4f) (boolean disableCameraTransform) |
| void | [disableDeviceInputs](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a468b0fa46f8cea857e6857b9f2945101) (boolean disableOperations) |
| void | [disableWindowOperation](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#ae287e91c5d3f92c5abbd8253ee09f680) (boolean disableWindowOperation) |
| void | [setWindowBoxState](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#ab96f5130fbd7180c641ec95a00c9364b) (String state) |
| Double | [getTimeDelay](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#ac35dafcef0ed29d406a29d7fccf0e7e1) () |
| void | [setTimeDelay](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#ae4fe2b66cc439a1f3822728a1a92ff94) (double delaySec) |
| void | [syncBlockTimestamp](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#ae5fd629c651259844aed2869eeaa966d) (long utcMs) |
| void | [dispatchMagixEvent](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#ae1518bd8a09077367b2b4d21e32c00d1) (AkkoEvent eventEntry) |
| void | [addApp](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a45539d0e6e928c2eaa16d97ba50717bd) (WindowAppParam appParam, Promise&lt;String&gt; promise) |
| void | [fitOriginSizeAndCamera](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#aec888d4b79e015f13c2e9d50234dca98) () |
| void | [closeApp](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a9039ca655718cf4ae83788e9cb3f880e) (String appId, Promise&lt;Boolean&gt; promise) |
| void | [focusApp](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#afb5c3bcd1384aedd25821f9450fa403c) (String appId) |
| void | [focusApp](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a7400b161f3efc5cf50a47a91a6b4e5db) (String appId, Promise&lt;Boolean&gt; promise) |
| void | [queryApp](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a4716222443f7501be43292b5a8682aa3) (String appId, Promise&lt;WindowAppSyncAttrs&gt; promise) |
| void | [queryAllApps](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a1ca46777a002ee9167f669f2bbcc0de7) (Promise&lt;Map&lt;String, WindowAppSyncAttrs&gt;&gt; promise) |
| void | [setWindowManagerAttributes](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#af63adc7bef6f6aa17d41f01de80dd420) (String attributes) |
| void | [setContainerSizeRatio](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#ab0abf016e02ab7452423b66b5b95e5c5) (float ratio) |
| void | [setPrefersColorScheme](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a60fab6ac5f07ed634ac28437c986d96e) (WindowPrefersColorScheme colorScheme) |
| void | [dispatchDocsEvent](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a4e7b20d12d67517e01a02be0e3e50a4c) (WindowDocsEvent docsEvent, Promise&lt;DispatchDocsEventResult&gt; promise) |
| void | [getPageState](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a0109ba9b7a90cf2773c23478eccc6827) (WindowPageStateOptions options, Promise&lt;UnifiedPageState&gt; promise) |
| void | [getPageState](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a9bdab96cdb8986350b6f892fd190b331) (Promise&lt;UnifiedPageState&gt; promise) |
| void | [querySlidePageState](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#afb5c9eeac662f24381f58e70b918dee7) (Promise&lt;SlidePageState&gt; promise) |
| void | [querySlidePageState](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a8d6660d6cff96a41b7c7aa6ea33732b1) (String appId, Promise&lt;SlidePageState&gt; promise) |
| void | [setSyncMode](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a6c417c79b6bccd7eb07b88b04ef8c4eb) (boolean useSyncMode) |
| RoomDelegate | [getRoomDelegate](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a8d2b63438a833fb843be771f827ddb2e) () |

<a id="a4b4ee486693efafc4683e312244d1129"></a>



## 变量说明 [#变量说明]

## 函数说明 [#函数说明]

<a id="af0769957f685bc185fcb6d53dec6a5cb"></a>

### getDisconnectedBySelf() [#getdisconnectedbyself]

<ApiSignature>

Boolean getDisconnectedBySelf()

</ApiSignature>

获取用户是否主动断开与白板房间的连接。

该方法可以避免白板 SDK 反复重连，用户不断重新加入房间。

<a id="a3d1f57d33e446dd2002f93e1f3840606"></a>

### getWritable() [#getwritable]

<ApiSignature>

Boolean getWritable()

</ApiSignature>

获取本地用户在当前互动白板实时房间是否为互动模式。

<h4 data-toc-hidden="true" id={"返回值"}>返回值</h4>

获取本地用户是否为互动模式：

- `true`：本地用户在当前互动白板实时房间为互动模式，即可对白板进行读写操作。
- `false`: 本地用户在当前互动白板实时房间为订阅模式，即对白板只能进行读取操作。

<a id="a43f3b32f18de3cd71c95a449deae6a6c"></a>

### getObserverId() [#getobserverid]

<ApiSignature>

Long getObserverId()

</ApiSignature>

获取用户在当前房间中的用户 ID。

:::info[自从]
2.4.11
:::

<h4 data-toc-hidden="true" id={"返回值-1"}>返回值</h4>

用户 ID。

<a id="ad06f67470a69830938a901baa8cab2bd"></a>

### copy() [#copy]

<ApiSignature>

void copy()

</ApiSignature>

复制选中内容。

:::info[自从]
2.9.3
:::

该方法会将选中的内容存储到内存中，不会粘贴到白板中。

:::info[注解]
该方法仅当 [`disableSerialization`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a7c790db1b2fc9404d39094c5592685e6) 设为 `false` 时生效。
:::

<a id="a8e1c5006771674ae3b468813e29492f4"></a>

### paste() [#paste]

<ApiSignature>

void paste()

</ApiSignature>

粘贴复制的内容。

:::info[自从]
2.9.3
:::

该方法会将 [`copy`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#ad06f67470a69830938a901baa8cab2bd) 方法复制的内容粘贴到白板中（用户当前的视角中间）。

:::info[注解]
- 该方法仅当 [`disableSerialization`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a7c790db1b2fc9404d39094c5592685e6) 设为 `false` 时生效。
- 多次调用该方法时，不能保证粘贴的内容每次都在用户当前的视角中间，可能会出现随机偏移。
:::

<a id="ab5415f550b394c8b19a121f5d4861426"></a>

### duplicate() [#duplicate]

<ApiSignature>

void duplicate()

</ApiSignature>

复制并粘贴选中的内容。

:::info[自从]
2.9.3
:::

该方法会将选中的内容复制并粘贴到白板中（用户当前的视角中间）。

:::info[注解]
- 该方法仅当 [`disableSerialization`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a7c790db1b2fc9404d39094c5592685e6) 设为 `false` 时生效。
- 多次调用该方法时，不能保证粘贴的内容每次都在用户当前的视角中间，可能会出现随机偏移。
:::

<a id="ab3a428118f9e090b0e62880d566af261"></a>

### deleteOperation() [#deleteoperation]

<ApiSignature>

void deleteOperation()

</ApiSignature>

删除选中的内容。

:::info[自从]
2.9.3
:::

<a id="a7c790db1b2fc9404d39094c5592685e6"></a>

### disableSerialization() [#disableserialization]

<ApiSignature>

void disableSerialization(boolean disable)

</ApiSignature>

开启/禁止本地序列化。

:::info[自从]
2.9.3
:::

设置 `disableSerialization(true)` 后，以下方法将不生效：

- `redo`
- `undo`
- `duplicate`
- `copy`
- `paste`

### 警告 [#警告]

如果要设置 `disableSerialization(false)`，必须确保同一房间内所有用户使用的 SDK 满足以下版本要求，否则会导致 app 客户端崩溃。

- Web SDK 2.9.3 或之后版本
- Android SDK 2.9.3 或之后版本
- iOS SDK 2.9.3 或之后版本

<ParameterList title="参数">
<Parameter name="disable">

是否禁止本地序列化：

- `true`：（默认）禁止开启本地序列化；
- `false`： 开启本地序列化，即可以对本地操作进行解析。

</Parameter>
</ParameterList>

<a id="a9ad047897d74af1590316cc5d338408c"></a>

### redo() [#redo]

<ApiSignature>

void redo()

</ApiSignature>

重做，即回退撤销操作。

:::info[自从]
2.9.3
:::

:::info[注解]
该方法仅当 [`disableSerialization`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a7c790db1b2fc9404d39094c5592685e6) 设为 `false` 时生效。
:::

<a id="a0cd3966f1df8de10f2bb5759fa28998b"></a>

### undo() [#undo]

<ApiSignature>

void undo()

</ApiSignature>

撤销上一步操作。

:::info[自从]
2.9.3
:::

:::info[注解]
该方法仅当 [`disableSerialization`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a7c790db1b2fc9404d39094c5592685e6) 设为 `false` 时生效。
:::

<a id="a62f41d229dee8d67211b3eeaaa46ef6e"></a>

### setViewMode() [#setviewmode]

<ApiSignature>

void setViewMode(ViewMode viewMode)

</ApiSignature>

切换视角模式。

互动白板实时房间支持对用户设置以下视角模式：

- `Broadcaster`: 主播模式。
- `Follower`：跟随模式。
- `Freedom`：（默认）自由模式。

该方法的设置会影响房间内所有用户的视角模式：

- 当房间内不存在主播模式的用户时，所有用户的视角都默认为自由模式。
- 当一个用户的视角设置为主播模式后，房间内其他所有用户（包括新加入房间的用户）的视角会被自动设置为跟随模式。
- 当跟随模式的用户进行白板操作时，其视角会自动切换为自由模式。你可以调用 [`disableOperations`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a6b265bdee91f2d961373d172bb969fe0)(true) 禁止跟随模式的用户操作白板，以保证其保持跟随模式。

该方法是异步操作。调用该方法后，你可以使用 [`getBroadcastState`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#abd40d4f3d60e963105a09eb514ecf29d)[2/2] 获取最新设置的视角模式。

<ParameterList title="参数">
<Parameter name="viewMode">

视角模式，详见 [`ViewMode`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/enumcom-1-1herewhite-1-1sdk-1-1domain-1-1-view-mode)。

</Parameter>
</ParameterList>

<a id="ac10c063697e5224ef05d341bb3987004"></a>

### disconnect() [#disconnect]

<ApiSignature>

void disconnect()

</ApiSignature>

主动断开与互动白板实时房间实例的连接。

该方法会把与当前房间实例相关的所有资源释放掉。如果要再次加入房间，需要重新调用 `joinRoom`。

:::info[注解]
调用该方法不会触发回调。如果需要收到断开连接的回调，请使用 [`disconnect`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#ad8aa1d2ce5b8e6d78094c2a9a3836dfa)[2/2]。
:::

<a id="ad8aa1d2ce5b8e6d78094c2a9a3836dfa"></a>

### disconnect() [#disconnect-1]

<ApiSignature>

void disconnect(Promise&lt;Object&gt; promise)

</ApiSignature>

主动断开与互动白板实时房间实例的连接。

该方法会把与当前房间实例相关的所有资源释放掉。如果要再次加入房间，需要重新调用 `joinRoom`。

你可以在该方法中传入 `Promise<Object>` 接口实例，以获取方法调用结果。

<ParameterList title="参数">
<Parameter name="promise">

`Promise<Object>` 接口实例，详见 [`Promise`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/interfacecom-1-1herewhite-1-1sdk-1-1domain-1-1-promise)。你可以通过该接口获取 `disconnect` 的调用结果：

- 成功仅通知异步退房完成，不提供房间全局状态快照。当前 Android 转换层将关闭确认解码为 GlobalState，业务不得从此回调读取房间状态；新接入优先使用 WhiteSdk.leaveRoom(Promise&lt;Object&gt;)。
- 如果方法调用失败，则返回错误信息。

</Parameter>
</ParameterList>

<a id="a195049bf53b03d538c847e0eecf9b679"></a>

### insertImage() [#insertimage]

<ApiSignature>

void insertImage(ImageInformation imageInfo)

</ApiSignature>

插入图片显示区域。

SDK 会根据你传入的 `ImageInformation` 在白板上设置并插入图片的显示区域。 调用该方法后，还需要调用 [`completeImageUpload`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a355bbeefe466ac0c2c5b2cdc420ce5dc) 传入图片的 Url 地址，以在该显示区域插入并展示图片。

:::info[注解]
你也可以调用 [`insertImage`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a6c85af35615b4d4696717b862fb428bc) 方法同时传入图片信息和图片的 Url 地址，在白板中插入并展示图片。
:::

<ParameterList title="参数">
<Parameter name="imageInfo">

图片信息，详见 [`ImageInformation`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1domain-1-1-image-information)。

</Parameter>
</ParameterList>

<a id="a355bbeefe466ac0c2c5b2cdc420ce5dc"></a>

### completeImageUpload() [#completeimageupload]

<ApiSignature>

void completeImageUpload(String uuid, String url)

</ApiSignature>

展示图片。

该方法可以将指定的网络图片展示到指定的图片显示区域。

:::info[注解]
调用该方法前，请确保你已经调用 [`insertImage`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a195049bf53b03d538c847e0eecf9b679) 方法在白板上插入了图片的显示区域。
:::

<ParameterList title="参数">
<Parameter name="uuid">

图片显示区域的 UUID, 即在 [`insertImage`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a195049bf53b03d538c847e0eecf9b679) 方法的 [`ImageInformation`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1domain-1-1-image-information) 中传入的图片 UUID。

</Parameter>
<Parameter name="url">

图片的 URL 地址。必须确保 app 客户端能访问该 URL，否则无法正常展示图片。

</Parameter>
</ParameterList>

<a id="a6c85af35615b4d4696717b862fb428bc"></a>

### insertImage() [#insertimage-1]

<ApiSignature>

void insertImage(ImageInformationWithUrl imageInformationWithUrl)

</ApiSignature>

插入并展示图片。

该方法封装了 [`insertImage`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a195049bf53b03d538c847e0eecf9b679) 和 [`completeImageUpload`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a355bbeefe466ac0c2c5b2cdc420ce5dc) 方法。 你可以在该方法中同时传入图片信息和图片的 URL，直接在白板中插入图片的显示区域并展示图片。

<ParameterList title="参数">
<Parameter name="imageInformationWithUrl">

图片信息及图片的 URL 地址，详见 [`ImageInformationWithUrl`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1domain-1-1-image-information-with-url)。

</Parameter>
</ParameterList>

<a id="ad03cd581ff32c16b49dcb4ee61049ba7"></a>

### insertText() [#inserttext]

<ApiSignature>

void insertText(int x, int y, String text)

</ApiSignature>

在指定位置插入文字

#### 参数 [#参数]

<ParameterList title="参数">
<Parameter name="x" />
<Parameter name="y" />
<Parameter name="text" />
</ParameterList>

<a id="a6ed25a156436b44b6405a279aeac6e6d"></a>

### insertText() [#inserttext-1]

<ApiSignature>

void insertText(int x, int y, String text, Promise&lt;String&gt; promise)

</ApiSignature>

在指定位置插入文字。

<ParameterList title="参数">
<Parameter name="x">

第一个文字左侧边的中点在世界坐标系中的 X 轴坐标。

</Parameter>
<Parameter name="y">

第一个文字左侧边的中点在世界坐标系中的 Y 轴坐标。

</Parameter>
<Parameter name="text">

初始的文字内容，不传则为空。

</Parameter>
<Parameter name="promise">

`Promise<String>` 接口实例，详见 [`Promise`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/interfacecom-1-1herewhite-1-1sdk-1-1domain-1-1-promise)。你可以通过该接口获取方法调用结果：

- 如果方法调用成功，则返回文字标识符。
- 如果方法调用失败，则返回错误信息。

</Parameter>
</ParameterList>

<a id="a6f3389698783fc57286518b370a80357"></a>

### updateText() [#updatetext]

<ApiSignature>

void updateText(String id, String text)

</ApiSignature>

更新指定文本的内容。

<ParameterList title="参数">
<Parameter name="id">

文字标识符，即 `insertText` 方法的回调值。

</Parameter>
<Parameter name="text">

文字内容。

</Parameter>
</ParameterList>

<a id="ac21ea599028066b2c54caece51372b77"></a>

### getGlobalState() [#getglobalstate]

<ApiSignature>

GlobalState getGlobalState()

</ApiSignature>

获取房间的全局状态。

:::info[自从]
2.4.0
:::

:::info[注解]
- 该方法为同步调用。
- 对于通过 [`setCustomGlobalStateClass`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1domain-1-1-white-displayer-state#aaa54cefb8939135f2e47985dca839d85) 方法设置的自定义 `GlobalState`，在获取后，可以直接进行强转。
- 调用 [`setGlobalState`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a50bf9e950f3cbce8b9ed5b250444ea70) 方法后，可以立刻调用该方法。
:::

<h4 data-toc-hidden="true" id={"返回值-2"}>返回值</h4>

房间的全局状态，详见 [`GlobalState`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1domain-1-1-global-state)。

<a id="a50bf9e950f3cbce8b9ed5b250444ea70"></a>

### setGlobalState() [#setglobalstate]

<ApiSignature>

void setGlobalState(GlobalState globalState)

</ApiSignature>

修改互动白板实时房间的公共全局状态。

实时房间的 `globalState` 属性为公共全局变量，房间内所有用户都可以读取 `globalState`，互动模式用户可以修改 `globalState`。 修改后的 `globalState` 会立即同步给所有用户。

<ParameterList title="参数">
<Parameter name="globalState">

房间公共全局状态，详见 [`GlobalState`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1domain-1-1-global-state).

</Parameter>
</ParameterList>

<a id="a9d92ee9c480ff653ea44fb269740765d"></a>

### getGlobalState() [#getglobalstate-1]

<ApiSignature>

void getGlobalState(Promise&lt;GlobalState&gt; promise)

</ApiSignature>

获取房间全局状态。

<a id="弃用"></a>

:::error[弃用:]
该方法已废弃。请使用 [`getGlobalState`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#ac21ea599028066b2c54caece51372b77)[1/2]。
:::

:::info[注解]
- 该方法为异步调用。
- 对于通过 [`setCustomGlobalStateClass`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1domain-1-1-white-displayer-state#aaa54cefb8939135f2e47985dca839d85) 方法设置的自定义 `GlobalState`，在获取后，可以直接进行强转。
:::

<ParameterList title="参数">
<Parameter name="promise">

`Promise<GlobalState>` 接口实例，详见 [`Promise`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/interfacecom-1-1herewhite-1-1sdk-1-1domain-1-1-promise)。你可以通过该接口获取 `getGlobalState` 的调用结果：

- 如果方法调用成功，则返回 `GlobalState` 对象，详见 [`GlobalState`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1domain-1-1-global-state)。
- 如果方法调用失败，则返回错误信息。

</Parameter>
</ParameterList>

<a id="adb7d0a6430be84c8ff5ce5ae67aeb5ca"></a>

### getMemberState() [#getmemberstate]

<ApiSignature>

MemberState getMemberState()

</ApiSignature>

获取当前的白板工具状态。

:::info[自从]
2.4.0
:::

:::info[注解]
- 该方法为同步调用。
- 调用 [`setMemberState`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#ab2d72aca8bef76ded5aa3c3ee873902f) 方法后，可以立即调用 [`getMemberState`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#adb7d0a6430be84c8ff5ce5ae67aeb5ca) 获取最新的白板工具状态。
:::

<h4 data-toc-hidden="true" id={"返回值-3"}>返回值</h4>

当前的白板工具状态，详见 [`MemberState`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1domain-1-1-member-state)。

<a id="ab2d72aca8bef76ded5aa3c3ee873902f"></a>

### setMemberState() [#setmemberstate]

<ApiSignature>

void setMemberState(MemberState memberState)

</ApiSignature>

修改房间内的白板工具状态。

调用该方法会立刻更新房间的 [`MemberState`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1domain-1-1-member-state)。 你可以调用 [`getMemberState`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#adb7d0a6430be84c8ff5ce5ae67aeb5ca) 获取最新设置的白板工具状态。

<ParameterList title="参数">
<Parameter name="memberState">

需要修改的白板工具状态，详见 [`MemberState`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1domain-1-1-member-state)。

</Parameter>
</ParameterList>

<a id="ae6d6f0c6ae7385a00efa62732cc04543"></a>

### getMemberState() [#getmemberstate-1]

<ApiSignature>

void getMemberState(Promise&lt;MemberState&gt; promise)

</ApiSignature>

获取当前的白板工具状态。

:::info[注解]
该方法为异步调用。
:::

<ParameterList title="参数">
<Parameter name="promise">

`Promise<MemberState>` 接口实例，详见 [`Promise`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/interfacecom-1-1herewhite-1-1sdk-1-1domain-1-1-promise)。你可以通过该接口获取 `getMemberState` 的调用结果：

- 如果方法调用成功，则返回白板工具状态，详见 [`MemberState`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1domain-1-1-member-state)。
- 如果方法调用失败，则返回错误信息。

</Parameter>
</ParameterList>

<a id="a2388307121c075620ba48f71fa970483"></a>

### getRoomMembers() [#getroommembers]

<ApiSignature>

RoomMember[] getRoomMembers()

</ApiSignature>

获取房间的用户列表。

:::info[注解]
- 该方法为同步调用。
- 房间的用户列表仅包含互动模式（具有读写权限）的用户，不包含订阅模式（只读权限）的用户。
:::

<h4 data-toc-hidden="true" id={"返回值-4"}>返回值</h4>

用户列表，详见 [`RoomMember`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1domain-1-1-room-member)。

<a id="a48ab27e5a0dbcb3d9cc06ae161cb7b58"></a>

### getRoomMembers() [#getroommembers-1]

<ApiSignature>

void getRoomMembers(Promise&lt;RoomMember[]&gt; promise)

</ApiSignature>

获取房间的用户列表。

:::info[注解]
- 该方法为异步调用。
- 房间的用户列表仅包含互动模式（具有读写权限）的用户，不包含订阅模式（只读权限）的用户。
:::

<ParameterList title="参数">
<Parameter name="promise">

`Promise<RoomMember[]>` 接口实例，详见 [`Promise`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/interfacecom-1-1herewhite-1-1sdk-1-1domain-1-1-promise)。你可以通过该接口获取 `getRoomMembers` 的调用结果：

- 如果方法调用成功，则返回用户列表，详见 [`RoomMember`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1domain-1-1-room-member)。
- 如果方法调用失败，则返回错误信息。

</Parameter>
</ParameterList>

<a id="af6f8d5c76a3d331cd1cd9d6f15565976"></a>

### getBroadcastState() [#getbroadcaststate]

<ApiSignature>

BroadcastState getBroadcastState()

</ApiSignature>

获取用户的视角状态。

:::info[自从]
2.4.0
:::

:::info[注解]
- 该方法为同步调用。
- 调用 [`setViewMode`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a62f41d229dee8d67211b3eeaaa46ef6e) 修改用户视角模式后，无法立刻通过 [`getBroadcastState`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#af6f8d5c76a3d331cd1cd9d6f15565976)[1/2] 获取最新的用户视角状态。 如果需要立即获取最新的用户视角状态，可以调用 [`getBroadcastState`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#abd40d4f3d60e963105a09eb514ecf29d)[2/2]。
:::

<h4 data-toc-hidden="true" id={"返回值-5"}>返回值</h4>

用户视角状态，详见 [`BroadcastState`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1domain-1-1-broadcast-state)。

<a id="abd40d4f3d60e963105a09eb514ecf29d"></a>

### getBroadcastState() [#getbroadcaststate-1]

<ApiSignature>

void getBroadcastState(Promise&lt;BroadcastState&gt; promise)

</ApiSignature>

获取用户视角状态。

:::info[注解]
- 该方法为异步调用。
- 调用 [`setViewMode`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a62f41d229dee8d67211b3eeaaa46ef6e) 修改用户视角模式后，无法立刻通过 [`getBroadcastState`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#af6f8d5c76a3d331cd1cd9d6f15565976)[1/2] 获取最新的用户视角状态。如果需要 立即获取最新的用户视角状态，可以调用 [`getBroadcastState`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#abd40d4f3d60e963105a09eb514ecf29d)[2/2]。
:::

<ParameterList title="参数">
<Parameter name="promise">

`Promise<BroadcastState>` 接口实例，详见 [`Promise`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/interfacecom-1-1herewhite-1-1sdk-1-1domain-1-1-promise)。你可以通过该接口获取 `getBroadcastState` 的调用结果：

- 如果方法调用成功，则返回用户视角状态，详见 [`BroadcastState`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1domain-1-1-broadcast-state)。
- 如果方法调用失败，则返回错误信息。

</Parameter>
</ParameterList>

<a id="a8a708f07fc9914a6a54a6c18e696ce2d"></a>

### getSceneState() [#getscenestate]

<ApiSignature>

SceneState getSceneState()

</ApiSignature>

获取房间当前场景目录下的场景状态。

:::info[自从]
2.4.0
:::

:::info[注解]
- 该方法为同步调用。
- 调用以下方法修改或新增场景后，无法通过 [`getSceneState`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a8a708f07fc9914a6a54a6c18e696ce2d)[1/2] 立即获取最新的场景状态。此时，如果需要立即获取最新的场景状态， 可以调用 [`getSceneState`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a76bd84717f518dddd9396c61f9e2f606)[2/2]。

  - [`setScenePath`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a4dfb1c0aac90cd2678aa773629198b1e)[1/2]
  - [`setScenePath`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#afb89dfcb412caf3377c75522aa3ab6c0)[2/2]
  - `[putScenes(String, Scene[], int)](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#ae2b7a63167b67f28d6a689d618184e4d)`
:::

<h4 data-toc-hidden="true" id={"返回值-6"}>返回值</h4>

当前场景目录下的场景状态，详见 [`SceneState`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1domain-1-1-scene-state)。

<a id="a76bd84717f518dddd9396c61f9e2f606"></a>

### getSceneState() [#getscenestate-1]

<ApiSignature>

void getSceneState(Promise&lt;SceneState&gt; promise)

</ApiSignature>

获取房间当前场景目录下的场景状态。

:::info[注解]
- 该方法为异步调用。
- 调用以下方法修改或新增场景后，你可以通过 [`getSceneState`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a76bd84717f518dddd9396c61f9e2f606) 立即获取最新的场景状态。

  - [`setScenePath`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a4dfb1c0aac90cd2678aa773629198b1e)[1/2]
  - [`setScenePath`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#afb89dfcb412caf3377c75522aa3ab6c0)[2/2]
  - `[putScenes(String, Scene[], int)](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#ae2b7a63167b67f28d6a689d618184e4d)`
:::

<ParameterList title="参数">
<Parameter name="promise">

`Promise<SceneState>` 接口实例，详见 [`Promise`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/interfacecom-1-1herewhite-1-1sdk-1-1domain-1-1-promise)。你可以通过该接口获取 `getSceneState` 的调用结果：

- 如果方法调用成功，则返回场景状态，详见 [`SceneState`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1domain-1-1-scene-state)。
- 如果方法调用失败，则返回错误信息。

</Parameter>
</ParameterList>

<a id="a5a9590e60683101fc8715c606180cd19"></a>

### getScenes() [#getscenes]

<ApiSignature>

Scene[] getScenes()

</ApiSignature>

获取房间当前场景目录下的场景列表。

:::info[自从]
2.4.0
:::

:::info[注解]
- 该方法为同步调用。
- 调用以下方法修改或新增场景后，无法通过 [`getScenes`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a5a9590e60683101fc8715c606180cd19)[1/2] 立即获取最新的场景列表。 此时，如果需要立即获取最新的场景列表，可以调用 [`getScenes`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a9d9265ad1fb0e698e0c8b281dfbd66f1)[2/2]。

  - [`setScenePath`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a4dfb1c0aac90cd2678aa773629198b1e)[1/2]
  - [`setScenePath`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#afb89dfcb412caf3377c75522aa3ab6c0)[2/2]
  - [`putScenes`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#ae2b7a63167b67f28d6a689d618184e4d)
:::

<h4 data-toc-hidden="true" id={"返回值-7"}>返回值</h4>

当前场景目录下的场景列表，详见 [`Scene`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1domain-1-1-scene)。

<a id="a9d9265ad1fb0e698e0c8b281dfbd66f1"></a>

### getScenes() [#getscenes-1]

<ApiSignature>

void getScenes(Promise&lt;Scene[]&gt; promise)

</ApiSignature>

获取房间当前场景目录下的场景列表。

:::info[注解]
- 该方法为异步调用。
- 调用以下方法修改或新增场景后，可以调用 [`getScenes`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a9d9265ad1fb0e698e0c8b281dfbd66f1)，立即获取最新的场景列表。

  - [`setScenePath`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a4dfb1c0aac90cd2678aa773629198b1e)[1/2]
  - [`setScenePath`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#afb89dfcb412caf3377c75522aa3ab6c0)[2/2]
  - [`putScenes`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#ae2b7a63167b67f28d6a689d618184e4d)
:::

<ParameterList title="参数">
<Parameter name="promise">

`Promise<Scene[]>` 接口实例，详见 [`Promise`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/interfacecom-1-1herewhite-1-1sdk-1-1domain-1-1-promise)。你可以通过该接口获取 `getScenes` 的调用结果：

- 如果方法调用成功，则返回场景列表，详见 [`Scene`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1domain-1-1-scene)。
- 如果方法调用失败，则返回错误信息。

</Parameter>
</ParameterList>

<a id="ac287ed3712b957412281f1330f7df32c"></a>

### getZoomScale() [#getzoomscale]

<ApiSignature>

double getZoomScale()

</ApiSignature>

获取用户当前的视角缩放比例。

:::info[自从]
2.4.0
:::

<a id="弃用-1"></a>

:::error[弃用:]
该方法已废弃。
:::

:::info[注解]
- 该方法为同步调用。
- 调用 [`zoomChange`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a81fddb80f2f65a70f2f5fe1e5652a5d0) 或 [`moveCamera`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-displayer#aa73a9b1c04e23e0f8b1ecb79099d858a) 调整视角缩放比例后，无法通过 [`getZoomScale`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#ac287ed3712b957412281f1330f7df32c)[1/2] 立即获取最新的缩放比例。 此时，如果需要立即获取最新的缩放比例，可以调用 [`getZoomScale`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#aff289f9e1bac68426d93fdfd8f7486e7)[2/2]。
:::

<h4 data-toc-hidden="true" id={"返回值-8"}>返回值</h4>

视角缩放比例。

<a id="aff289f9e1bac68426d93fdfd8f7486e7"></a>

### getZoomScale() [#getzoomscale-1]

<ApiSignature>

void getZoomScale(Promise&lt;Number&gt; promise)

</ApiSignature>

获取当前用户的视角缩放比例。

<a id="弃用-2"></a>

:::error[弃用:]
该方法已废弃。
:::

:::info[注解]
- 该方法为异步调用。
- 调用 [`zoomChange`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a81fddb80f2f65a70f2f5fe1e5652a5d0) 或 [`moveCamera`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-displayer#aa73a9b1c04e23e0f8b1ecb79099d858a) 调整视角缩放比例后，如果需要立即获取最新的缩放比例，可以调用 [`getZoomScale`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#aff289f9e1bac68426d93fdfd8f7486e7)[2/2]。
:::

<ParameterList title="参数">
<Parameter name="promise">

`Promise<Number>` 接口实例，详见 [`Promise`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/interfacecom-1-1herewhite-1-1sdk-1-1domain-1-1-promise)。你可以通过该接口获取 `getZoomScale` 的调用结果：

- 如果方法调用成功，则返回视角缩放比例。
- 如果方法调用失败，则返回错误信息。

</Parameter>
</ParameterList>

<a id="a2c0ef694235dccda2fb92b3ba141880d"></a>

### getRoomPhase() [#getroomphase]

<ApiSignature>

RoomPhase getRoomPhase()

</ApiSignature>

获取房间的连接状态。

:::info[自从]
2.4.0
:::

:::info[注解]
- 该方法为同步调用。
- 调用 [`disconnect`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#ac10c063697e5224ef05d341bb3987004)[1/2] 或 [`disconnect`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#ad8aa1d2ce5b8e6d78094c2a9a3836dfa)[2/2] 断开 SDK 与实时房间的连接后，无法立即通过 [`getRoomPhase`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a2c0ef694235dccda2fb92b3ba141880d)[1/2] 获取最新的房间连接状态。 此时，你可以调用 [`getRoomPhase`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a6759ad742065c0e82592e8a0ed8aabee)[2/2] 立即获取最新的房间连接状态。
:::

<h4 data-toc-hidden="true" id={"返回值-9"}>返回值</h4>

房间的连接状态，详见 [`RoomPhase`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/enumcom-1-1herewhite-1-1sdk-1-1domain-1-1-room-phase)。

<a id="a6759ad742065c0e82592e8a0ed8aabee"></a>

### getRoomPhase() [#getroomphase-1]

<ApiSignature>

void getRoomPhase(Promise&lt;RoomPhase&gt; promise)

</ApiSignature>

获取房间的连接状态。

:::info[注解]
- 该方法为异步调用。
- 调用 [`disconnect`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#ac10c063697e5224ef05d341bb3987004)[1/2] 或 [`disconnect`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#ad8aa1d2ce5b8e6d78094c2a9a3836dfa)[2/2] 断开 SDK 与实时房间的连接后，无法立即通过 [`getRoomPhase`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a2c0ef694235dccda2fb92b3ba141880d)[1/2] 获取最新的房间连接状态。 此时，你可以调用 [`getRoomPhase`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a6759ad742065c0e82592e8a0ed8aabee)[2/2] 立即获取最新的房间连接状态。
:::

<ParameterList title="参数">
<Parameter name="promise">

`Promise<RoomPhase>` 接口实例，详见 [`Promise`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/interfacecom-1-1herewhite-1-1sdk-1-1domain-1-1-promise)。你可以通过该接口获取 `getRoomPhase` 的调用结果：

- 如果方法调用成功，则返回房间连接状态，详见 [`RoomPhase`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/enumcom-1-1herewhite-1-1sdk-1-1domain-1-1-room-phase)。
- 如果方法调用失败，则返回错误信息。

</Parameter>
</ParameterList>

<a id="a9578a9ae744eb64d8bd939e3af3b68db"></a>

### getRoomState() [#getroomstate]

<ApiSignature>

RoomState getRoomState()

</ApiSignature>

获取房间的所有状态。

:::info[自从]
2.4.0
:::

:::info[注解]
- 该方法为同步调用。
- 修改房间的状态属性后，无法立即通过 [`getRoomState`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a9578a9ae744eb64d8bd939e3af3b68db)[1/2] 获取最新的房间状态。 此时，如果需要立即获取最新的房间状态，可以调用 [`getRoomState`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a7c00f3eb5374d153b594fb772cf7339f)[2/2] 获取。
:::

<h4 data-toc-hidden="true" id={"返回值-10"}>返回值</h4>

房间当前的所有状态，详见 [`RoomState`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1domain-1-1-room-state)。

<a id="a7c00f3eb5374d153b594fb772cf7339f"></a>

### getRoomState() [#getroomstate-1]

<ApiSignature>

void getRoomState(Promise&lt;RoomState&gt; promise)

</ApiSignature>

获取房间的所有状态。

:::info[注解]
- 该方法为异步调用。
- 修改房间的状态属性后，无法立即通过 [`getRoomState`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a9578a9ae744eb64d8bd939e3af3b68db) 获取最新的房间状态。此时，如果需要立即获取最新的房间状态，可以调用 [`getRoomState`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#a7c00f3eb5374d153b594fb772cf7339f)[2/2] 获取。
:::

<ParameterList title="参数">
<Parameter name="promise">

`Promise<RoomState>` 接口实例，详见 [`Promise`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/interfacecom-1-1herewhite-1-1sdk-1-1domain-1-1-promise)。你可以通过该接口获取 `getRoomState` 的调用结果：

- 如果方法调用成功，则返回房间所有状态，详见 [`RoomState`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1domain-1-1-room-state)。
- 如果方法调用失败，则返回错误信息。

</Parameter>
</ParameterList>

<a id="a4dfb1c0aac90cd2678aa773629198b1e"></a>

### setScenePath() [#setscenepath]

<ApiSignature>

void setScenePath(String path)

</ApiSignature>

切换至指定的场景。

方法调用成功后，房间内的所有用户看到的白板都会切换到指定场景。

:::info[注解]
- 该方法为同步调用。
- 如需获取方法调用回调，请使用 [`setScenePath`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-room#afb89dfcb412caf3377c75522aa3ab6c0)[2/2]。
:::

场景切换失败可能有以下原因：

- 路径不合法，请确保场景路径以 `/` 开头，由场景目录和场景名构成。
- 场景路径对应的场景不存在。
- 传入的路径是场景目录的路径，而不是场景路径。

<ParameterList title="参数">
<Parameter name="path">

想要切换到的场景的场景路径，请确保场景路径以 `/` 开头，由场景目录和场景名构成，例如，`/math/classA`.

</Parameter>
</ParameterList>

<a id="afb89dfcb412caf3377c75522aa3ab6c0"></a>

### setScenePath() [#setscenepath-1]

<ApiSignature>

void setScenePath(String path, Promise&lt;Boolean&gt; promise)

</ApiSignature>

切换至指定的场景。

方法调用成功后，房间内的所有用户看到的白板都会切换到指定场景。

:::info[注解]
该方法为异步调用。
:::

场景切换失败可能有以下原因：

- 路径不合法，请确保场景路径以 "/"，由场景目录和场景名构成。
- 场景路径对应的场景不存在。
- 传入的路径是场景目录的路径，而不是场景路径。

<ParameterList title="参数">
<Parameter name="path">

想要切换到的场景的场景路径，请确保场景路径以 "/"，由场景目录和场景名构成，例如，`/math/classA`.

</Parameter>
<Parameter name="promise">

`Promise<Boolean>` 接口，详见 [`Promise`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/interfacecom-1-1herewhite-1-1sdk-1-1domain-1-1-promise)。你可以通过该接口获取 `setScenePath` 的调用结果：

- 如果方法调用成功，则返回 `true`.
- 如果方法调用失败，则返回错误信息。

</Parameter>
</ParameterList>

<a id="a003fc53c0744799200fbac3ac6128e1a"></a>

### setSceneIndex() [#setsceneindex]

<ApiSignature>

void setSceneIndex(Integer index, Promise&lt;Boolean&gt; promise)

</ApiSignature>

切换至当前场景目录下的指定场景。

方法调用成功后，房间内的所有用户看到的白板都会切换到指定场景。 指定的场景必须在当前场景目录中，否则，方法调用会失败。

<ParameterList title="参数">
<Parameter name="index">

目标场景在当前场景目录下的索引号。

</Parameter>
<Parameter name="promise">

`Promise<Boolean>` 接口，详见 [`Promise`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/interfacecom-1-1herewhite-1-1sdk-1-1domain-1-1-promise)。你可以通过该接口获取 `setSceneIndex` 的调用结果：

- 如果方法调用成功，则返回 `true`。
- 如果方法调用失败，则返回错误信息。

</Parameter>
</ParameterList>

<a id="ae2b7a63167b67f28d6a689d618184e4d"></a>

### putScenes() [#putscenes]

<ApiSignature>

void putScenes(String dir, Scene[] scenes, int index)

</ApiSignature>

在指定场景目录下插入多个场景。

:::info[注解]
调用该方法插入多个场景后不会切换到新插入的场景。如果要切换至新插入的场景，需要调用 `setScenePath`。
:::

<ParameterList title="参数">
<Parameter name="dir">

场景目录的名称，必须以 `/` 开头。不能为场景路径。

</Parameter>
<Parameter name="scenes">

由多个场景构成的数组。单个场景的字段详见 [`Scene`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1domain-1-1-scene)。

</Parameter>
<Parameter name="index">

待插入的多个场景中，第一个场景在该场景目录的索引号。如果传入的索引号大于该场景目录已有场景总数，新插入的场景会排在现有场景的最后。场景的索引号从 0 开始。

</Parameter>
</ParameterList>

**示例代码**

```text

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");
```

<a id="a7361194cdc471d597921c14d2096e145"></a>

### moveScene() [#movescene]

<ApiSignature>

void moveScene(String sourcePath, String targetDirOrPath)

</ApiSignature>

移动场景。

成功移动场景后，场景路径也会改变。

:::info[注解]
- 该方法只能移动场景，不能移动场景目录，即 `sourcePath` 只能是场景路径，不能是场景目录路径。
- 该方法支持改变指定场景在当前所属场景目录下的位置，也支持将指定场景移至其他场景目录。
:::

<ParameterList title="参数">
<Parameter name="sourcePath">

需要移动的场景原路径。必须为场景路径，不能是场景目录的路径。

</Parameter>
<Parameter name="targetDirOrPath">

目标场景目录的路径或目标场景的路径：

- 当 `targetDirOrPath` 设置为场景目录时，表示将指定场景移至其他场景目录中，场景路径会发生改变，但是场景名称不变。
- 当 `targetDirOrPath` 设置为场景时，表示改变指定场景在当前场景目录的位置，场景路径和场景名都会发生改变。

</Parameter>
</ParameterList>

<a id="affd9982f863d1e91168428fa2df1053a"></a>

### removeScenes() [#removescenes]

<ApiSignature>

void removeScenes(String dirOrPath)

</ApiSignature>

删除场景或者场景目录。

:::info[注解]
- 互动白板实时房间内必须至少有一个场景。当删除所有的场景后，SDK 会自动生成一个路径为 `/init` 初始场景（房间初始化时的默认场景）。
- 如果删除白板当前所在场景，白板会展示被删除场景所在场景目录的最后一个场景
- 如果删除的是场景目录，则该场景目录下的所有场景都会被删除。
- 如果删除的是当前场景所在的场景目录，例如 `dirA`，SDK 会执行向上递归逻辑选择新的场景作为当前场景，规则如下：

  1. 如果当前场景目录路径下还有其他场景目录，例如 `dirB`，排在被删除的场景目录 `dirA` 后面，则将场景切换至 `dirB` 中的第一个场景（index 为 0）。
  2. 如果当前场景目录路径下 `dirA` 后不存在场景目录，则查看当前场景目录路径下是否存在场景； 如果存在，则将场景切换至当前场景目录路径下的第一个场景（index 为 0）。
  3. 如果当前场景目录路径下 `dirA` 后没有场景目录，也不存在任何场景，则查看 `dirA` 前面是否存在场景目录 `dirC`；如果存在，则选择 `dirC` 中的第一个场景（index 为 0）。 SDK 会继续向上递归执行该逻辑，直到找到新的场景。
:::

<ParameterList title="参数">
<Parameter name="dirOrPath">

场景目录路径或者场景路径。如果传入的是场景目录，则会删除该场景目录下的所有场景。

</Parameter>
</ParameterList>

<a id="ad051bd3599948c161bcb2c983d80ef5a"></a>

### cleanScene() [#cleanscene]

<ApiSignature>

void cleanScene(boolean retainPpt)

</ApiSignature>

清除当前场景的所有内容。

<ParameterList title="参数">
<Parameter name="retainPpt">

是否保留 PPT 内容：

- `true`：保留 PPT。
- `false`：连 PPT 一起清空。

</Parameter>
</ParameterList>

<a id="a2f0b17c6af0f8c2bcaef84ad600e51af"></a>

### pptNextStep() [#pptnextstep]

<ApiSignature>

void pptNextStep()

</ApiSignature>

播放动态 PPT 下一页。

:::info[自从]
2.2.0
:::

当前 PPT 页面的动画已全部执行完成时，SDK 会将场景切换至下一页 PPT。

<a id="aa54cbba71f9d37d3f00809337015fe03"></a>

### pptPreviousStep() [#pptpreviousstep]

<ApiSignature>

void pptPreviousStep()

</ApiSignature>

返回动态 PPT 上一页。

:::info[自从]
2.2.0
:::

当前 PPT 页面的动画全部回退完成时，SDK 会将场景切回至上一页 PPT。

<a id="a566026198b2d988e816e1b6ae7a82fd3"></a>

### addPage() [#addpage]

<ApiSignature>

void addPage()

</ApiSignature>

添加新页面到场景集最后位置

:::info[自此版本]
2.16.3
:::

<a id="a4028654e92a04b5e209650f58e90f969"></a>

### addPage() [#addpage-1]

<ApiSignature>

void addPage(Scene scene, boolean after)

</ApiSignature>

添加新页面

#### 参数 [#参数-1]

<ParameterList title="参数">
<Parameter name="scene">

场景

</Parameter>
<Parameter name="after">

true 时添加到当前页面的下一个页面, false 时添加到最后一页  添加页面之后不自动切换，需要调用`setSceneIndex`或者 `nextPage` 切换页面

</Parameter>
</ParameterList>

:::info[自此版本]
2.16.3
:::

<a id="a045fabaff4ea72af8ef72c04fa070225"></a>

### removePage() [#removepage]

<ApiSignature>

void removePage(Promise&lt;Boolean&gt; promise)

</ApiSignature>

删除当前页面，多窗口下限定为主白板场景集当前页面。

:::info[自从]
2.16.23
:::

<a id="a70ef00a6a33a306cab048919218b8f34"></a>

### removePage() [#removepage-1]

<ApiSignature>

void removePage(int index, Promise&lt;Boolean&gt; promise)

</ApiSignature>

删除当前场景集指定页面，多窗口下限定为主白板场景集下页面

:::info[自从]
2.16.23
:::

<ParameterList title="参数">
<Parameter name="index">

指定页面索引号。

</Parameter>
</ParameterList>

<a id="ab4f0c417f4ad2af1ea9e69715d8a7825"></a>

### nextPage() [#nextpage]

<ApiSignature>

void nextPage(Promise&lt;Boolean&gt; promise)

</ApiSignature>

切换到下一个页面

#### 参数 [#参数-2]

<ParameterList title="参数">
<Parameter name="promise" />
</ParameterList>

:::info[自此版本]
2.16.3
:::

<a id="ac16b93d99f0acfed5b787053f090c8a3"></a>

### prevPage() [#prevpage]

<ApiSignature>

void prevPage(Promise&lt;Boolean&gt; promise)

</ApiSignature>

切换到上一个页面

#### 参数 [#参数-3]

<ParameterList title="参数">
<Parameter name="promise" />
</ParameterList>

:::info[自此版本]
2.16.3
:::

<a id="a81fddb80f2f65a70f2f5fe1e5652a5d0"></a>

### zoomChange() [#zoomchange]

<ApiSignature>

void zoomChange(double scale)

</ApiSignature>

更新视角的缩放比例。

<a id="弃用-3"></a>

:::error[弃用:]
该方法已经废弃。请使用 [`moveCamera(CameraConfig)`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1-displayer#aa73a9b1c04e23e0f8b1ecb79099d858a)。
:::

<ParameterList title="参数">
<Parameter name="scale">

视角的缩放比例。

</Parameter>
</ParameterList>

<a id="a78cb9ef60e7a4e61696dfc5e8301d064"></a>

### debugInfo() [#debuginfo]

<ApiSignature>

void debugInfo(Promise&lt;JSONObject&gt; promise)

</ApiSignature>

获取调试日志信息。

:::info[自从]
2.6.2
:::

<ParameterList title="参数">
<Parameter name="promise">

`Promise<JSONObject>` 接口实例，详见 [`Promise`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/interfacecom-1-1herewhite-1-1sdk-1-1domain-1-1-promise)。你可以通过该接口获取 `debugInfo` 的调用结果：

- 如果方法调用成功，则返回调试日志信息。
- 如果方法调用失败，则返回错误信息。

</Parameter>
</ParameterList>

<a id="a6b265bdee91f2d961373d172bb969fe0"></a>

### disableOperations() [#disableoperations]

<ApiSignature>

void disableOperations(boolean disableOperations)

</ApiSignature>

允许/禁止白板响应用户任何操作。

该方法设置是否禁止白板响应用户的操作，包括：

- `CameraTransform`：移动、缩放视角。
- `DeviceInputs`：使用白板工具输入。

<ParameterList title="参数">
<Parameter name="disableOperations">

允许/禁止白板响应用户任何操作。

- `true`：不响应用户操作。
- `false`：（默认）响应用户操作。

</Parameter>
</ParameterList>

<a id="a1cea527622d0cdf3d6eb0b01835b1370"></a>

### setWritable() [#setwritable]

<ApiSignature>

void setWritable(boolean writable, Promise&lt;Boolean&gt; promise)

</ApiSignature>

设置用户在房间中是否为互动模式。

:::info[自从]
2.6.1
:::

<ParameterList title="参数">
<Parameter name="writable">

用户在房间中是否为互动模式：

- `true`：互动模式，即具有读写权限。
- `false`：订阅模式，即具有只读权限。

</Parameter>
<Parameter name="promise">

`Promise<Boolean>` 接口实例，详见 [`Promise`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/interfacecom-1-1herewhite-1-1sdk-1-1domain-1-1-promise)。你可以通过该接口获取 `setWritable` 的调用结果：

- 如果方法调用成功，则返回用户在房间中的读写状态。
- 如果方法调用失败，则返回错误信息。

</Parameter>
</ParameterList>

<a id="a4f860e53b4cab0f574b22a2e8fdf235d"></a>

### disableEraseImage() [#disableeraseimage]

<ApiSignature>

void disableEraseImage(boolean disable)

</ApiSignature>

关闭/开启橡皮擦擦除图片功能。

:::info[自从]
2.9.3
:::

<ParameterList title="参数">
<Parameter name="disable">

是否关闭橡皮擦擦除图片功能：

- `true`：禁止橡皮擦擦除图片。
- `false`：（默认）允许橡皮擦擦除图片。

</Parameter>
</ParameterList>

<a id="a0cadc59b5eb670a2361f5befedc90f4f"></a>

### disableCameraTransform() [#disablecameratransform]

<ApiSignature>

void disableCameraTransform(boolean disableCameraTransform)

</ApiSignature>

禁止/允许用户调整（移动或缩放）视角。

:::info[自从]
2.2.0
:::

<ParameterList title="参数">
<Parameter name="disableCameraTransform">

是否禁止用户调整视角：

- `true`：禁止用户调整视角。
- `false`：（默认）允许用户调整视角。

</Parameter>
</ParameterList>

<a id="a468b0fa46f8cea857e6857b9f2945101"></a>

### disableDeviceInputs() [#disabledeviceinputs]

<ApiSignature>

void disableDeviceInputs(boolean disableOperations)

</ApiSignature>

禁止/允许用户操作白板工具。

:::info[自从]
2.2.0
:::

<ParameterList title="参数">
<Parameter name="disableOperations">

是否禁止用户操作白板工具：

- `true`：禁止用户操作白板工具操作。
- `false`：（默认）允许用户操作白板工具输入操作。

</Parameter>
</ParameterList>

<a id="ae287e91c5d3f92c5abbd8253ee09f680"></a>

### disableWindowOperation() [#disablewindowoperation]

<ApiSignature>

void disableWindowOperation(boolean disableWindowOperation)

</ApiSignature>

禁止/允许窗口操作。

#### 参数 [#参数-4]

<ParameterList title="参数">
<Parameter name="disableWindowOperation">

是否禁止窗口操作： - `true`：禁止窗口操作。 - `false`：（默认）允许窗口操作。

</Parameter>
</ParameterList>

:::info[自此版本]
2.2.0
:::

<a id="ab96f5130fbd7180c641ec95a00c9364b"></a>

### setWindowBoxState() [#setwindowboxstate]

<ApiSignature>

void setWindowBoxState(String state)

</ApiSignature>

设置窗口状态：normal、maximized 或 minimized；强制最大化策略生效时不能进入 normal。

<a id="ac35dafcef0ed29d406a29d7fccf0e7e1"></a>

### getTimeDelay() [#gettimedelay]

<ApiSignature>

Double getTimeDelay()

</ApiSignature>

获取本地显示远端白板内容的延时。

<h4 data-toc-hidden="true" id={"返回值-11"}>返回值</h4>

延时时长，单位为秒。

<a id="ae4fe2b66cc439a1f3822728a1a92ff94"></a>

### setTimeDelay() [#settimedelay]

<ApiSignature>

void setTimeDelay(double delaySec)

</ApiSignature>

设置本地显示远端白板内容的延时。

调用该方法后，当本地用户接收到远端白板内容时，SDK 会根据你设置的 `timeDelay` 的值延迟显示白板内容。

在音视频传输延时较大的场景中，如使用 CDN 推送音视频流时，你可以使用该参数延迟显示接收到的远端白板内容，以确保白板内容与音视频同步。

<ParameterList title="参数">
<Parameter name="delaySec">

延时时长，单位为秒。取值必须大于等于 0。默认值为 0。

</Parameter>
</ParameterList>

<a id="ae5fd629c651259844aed2869eeaa966d"></a>

### syncBlockTimestamp() [#syncblocktimestamp]

<ApiSignature>

void syncBlockTimestamp(long utcMs)

</ApiSignature>

设置本地显示远端白板内容的 Unix 时间戳（ms）。

:::info[自从]
2.12.26
:::

调用该方法后，SDK 会根据你设置的 `timestamp` 的值显示接收到的远端白板内容。

在同时订阅音视频流和白板内容的场景中，你可以从音视频流附带的 SEI 帧中获取时间信息， 并调用该方法设置远端白板内容在本地的显示时间，以确保音视频流和白板内容实时同步。

<ParameterList title="参数">
<Parameter name="utcMs">

远端白板内容在本地显示的 Unix 时间戳，单位为毫秒。

</Parameter>
</ParameterList>

<a id="ae1518bd8a09077367b2b4d21e32c00d1"></a>

### dispatchMagixEvent() [#dispatchmagixevent]

<ApiSignature>

void dispatchMagixEvent(AkkoEvent eventEntry)

</ApiSignature>

发送自定义事件。

:::info[注解]
所有注册监听该事件的用户都会收到通知。
:::

<ParameterList title="参数">
<Parameter name="eventEntry">

自定义事件内容，详见 [`AkkoEvent`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1domain-1-1-akko-event)。

</Parameter>
</ParameterList>

<a id="a45539d0e6e928c2eaa16d97ba50717bd"></a>

### addApp() [#addapp]

<ApiSignature>

void addApp(WindowAppParam appParam, Promise&lt;String&gt; promise)

</ApiSignature>

在多窗口模式添加 App，成功返回 appId；创建失败或焦点未提交进入异步错误路径。添加 App。lazy 模式或最小化状态可先返回 ID；eager 模式尝试等待 setup 并确认焦点，但 setup 异常可仅记录日志，仍可能返回 ID。返回 ID 不保证初始化或渲染成功；创建失败或未取得 ID 的结果按本端错误/空值接口处理。成功返回不能泛化为所有资源渲染完成。originSize 序列化到 attributes.originSize。

<a id="aec888d4b79e015f13c2e9d50234dca98"></a>

### fitOriginSizeAndCamera() [#fitoriginsizeandcamera]

<ApiSignature>

void fitOriginSizeAndCamera()

</ApiSignature>

启用 MainView originSize 模式后恢复 MainView 参考尺寸和初始相机状态，不修改 Slide/Presentation 的 App 参考尺寸。

<a id="a9039ca655718cf4ae83788e9cb3f880e"></a>

### closeApp() [#closeapp]

<ApiSignature>

void closeApp(String appId, Promise&lt;Boolean&gt; promise)

</ApiSignature>

等待内嵌 Window Manager 完成关闭和后继焦点交接后回调。当前 Native 层收到完成回调后固定返回 true，不提供可靠的 false 业务失败结果；需要结合查询和房间状态处理未收到完成的情况。

<a id="afb5c3bcd1384aedd25821f9450fa403c"></a>

### focusApp() [#focusapp]

<ApiSignature>

void focusApp(String appId)

</ApiSignature>

切换焦点。可等待的布尔结果表示房间共享 focus、本地 Box 焦点及 zIndex 已提交；false 表示请求被取代或未提交。setup 失败/超时只记录日志，不能用 true 判断课件首帧已就绪。Android 无 Promise 的重载只发出请求。

<a id="a7400b161f3efc5cf50a47a91a6b4e5db"></a>

### focusApp() [#focusapp-1]

<ApiSignature>

void focusApp(String appId, Promise&lt;Boolean&gt; promise)

</ApiSignature>

切换焦点。可等待的布尔结果表示房间共享 focus、本地 Box 焦点及 zIndex 已提交；false 表示请求被取代或未提交。setup 失败/超时只记录日志，不能用 true 判断课件首帧已就绪。Android 无 Promise 的重载只发出请求。

<a id="a4716222443f7501be43292b5a8682aa3"></a>

### queryApp() [#queryapp]

<ApiSignature>

void queryApp(String appId, Promise&lt;WindowAppSyncAttrs&gt; promise)

</ApiSignature>

查询指定小窗应用的信息。

该方法仅在多窗口下有效。

<ParameterList title="参数">
<Parameter name="appId">

小窗应用 ID。

</Parameter>
<Parameter name="promise">

`Promise<Object>` 接口实例，详见 [`Promise`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/interfacecom-1-1herewhite-1-1sdk-1-1domain-1-1-promise)。你可以通过该接口获取方法调用结果：

</Parameter>
</ParameterList>

- 如果方法调用成功，则返回小窗应用相关信息，详见 [`WindowAppSyncAttrs`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/classcom-1-1herewhite-1-1sdk-1-1domain-1-1-window-app-sync-attrs)。
- 如果方法调用失败，则返回错误信息。

<a id="a1ca46777a002ee9167f669f2bbcc0de7"></a>

### queryAllApps() [#queryallapps]

<ApiSignature>

void queryAllApps(Promise&lt;Map&lt;String, WindowAppSyncAttrs&gt;&gt; promise)

</ApiSignature>

查询所有小窗应用的信息。

该方法仅在多窗口下有效。

<ParameterList title="参数">
<Parameter name="promise">

`Promise<Object>` 接口实例，详见 [`Promise`](/zh-CN/api-reference/whiteboard/whiteboard-sdk/android/interfacecom-1-1herewhite-1-1sdk-1-1domain-1-1-promise)。你可以通过该接口获取方法调用结果：

</Parameter>
</ParameterList>

- 如果方法调用成功，则返回一个以应用 ID 为键，包含所有小窗应用信息的字典。详见 `WhiteAppSyncAttributes`。
- 如果方法调用失败，则返回错误信息。

<a id="af63adc7bef6f6aa17d41f01de80dd420"></a>

### setWindowManagerAttributes() [#setwindowmanagerattributes]

<ApiSignature>

void setWindowManagerAttributes(String attributes)

</ApiSignature>

恢复当前多窗口状态

#### 参数 [#参数-5]

<ParameterList title="参数">
<Parameter name="attributes" />
</ParameterList>

<a id="ab0abf016e02ab7452423b66b5b95e5c5"></a>

### setContainerSizeRatio() [#setcontainersizeratio]

<ApiSignature>

void setContainerSizeRatio(float ratio)

</ApiSignature>

设置多窗口显示比例

#### 参数 [#参数-6]

<ParameterList title="参数">
<Parameter name="ratio">

高与宽比例

</Parameter>
</ParameterList>

<a id="a60fab6ac5f07ed634ac28437c986d96e"></a>

### setPrefersColorScheme() [#setpreferscolorscheme]

<ApiSignature>

void setPrefersColorScheme(WindowPrefersColorScheme colorScheme)

</ApiSignature>

设置设置暗色模式

#### 参数 [#参数-7]

<ParameterList title="参数">
<Parameter name="colorScheme">

WindowPrefersColorScheme

</Parameter>
</ParameterList>

<a id="a4e7b20d12d67517e01a02be0e3e50a4c"></a>

### dispatchDocsEvent() [#dispatchdocsevent]

<ApiSignature>

void dispatchDocsEvent(WindowDocsEvent docsEvent, Promise&lt;DispatchDocsEventResult&gt; promise)

</ApiSignature>

统一控制 MainView、DocsViewer、Slide、Presentation。target 可为 mainView 或具体 appId，省略时跟随焦点；page 从 1 开始，scale=1 表示适配尺寸。返回 DispatchDocsEventResult：accepted=true 仅表示命令接收，不保证画面完成；accepted=false 包含 reason/message。DocsViewer 不支持 scalePage。传输/执行异常进入异步错误路径，实际状态通过统一页状态回调观察。

<a id="a0109ba9b7a90cf2773c23478eccc6827"></a>

### getPageState() [#getpagestate]

<ApiSignature>

void getPageState(WindowPageStateOptions options, Promise&lt;UnifiedPageState&gt; promise)

</ApiSignature>

查询统一页面状态，返回 target、可选 appId、1-based page/pageCount 和可选相对 scale。查询目标用 mainView 或 appId；状态 target 返回 mainView/DocsViewer/Slide/Presentation。

<a id="a9bdab96cdb8986350b6f892fd190b331"></a>

### getPageState() [#getpagestate-1]

<ApiSignature>

void getPageState(Promise&lt;UnifiedPageState&gt; promise)

</ApiSignature>

查询统一页面状态，返回 target、可选 appId、1-based page/pageCount 和可选相对 scale。查询目标用 mainView 或 appId；状态 target 返回 mainView/DocsViewer/Slide/Presentation。

<a id="afb5c9eeac662f24381f58e70b918dee7"></a>

### querySlidePageState() [#queryslidepagestate]

<ApiSignature>

void querySlidePageState(Promise&lt;SlidePageState&gt; promise)

</ApiSignature>

查询当前焦点 Slide 或指定 appId 的页码和总页数，页码从 1 开始；统一跨课件控制使用 getPageState。

<a id="a8d6660d6cff96a41b7c7aa6ea33732b1"></a>

### querySlidePageState() [#queryslidepagestate-1]

<ApiSignature>

void querySlidePageState(String appId, Promise&lt;SlidePageState&gt; promise)

</ApiSignature>

查询当前焦点 Slide 或指定 appId 的页码和总页数，页码从 1 开始；统一跨课件控制使用 getPageState。

<a id="a6c417c79b6bccd7eb07b88b04ef8c4eb"></a>

### setSyncMode() [#setsyncmode]

<ApiSignature>

void setSyncMode(boolean useSyncMode)

</ApiSignature>

默认情况下，所有同步消息会按比较平滑的速度处理，以此保证观感的流畅性。 如果设置此项为 `true`，则所有消息一经收到立刻处理，从而保证同步的实时性。

<ParameterList title="参数">
<Parameter name="useSyncMode">

是否开启同步模式：

- `true`：开启。
- `false`：关闭。

</Parameter>
</ParameterList>

<a id="a8d2b63438a833fb843be771f827ddb2e"></a>

### getRoomDelegate() [#getroomdelegate]

<ApiSignature>

RoomDelegate getRoomDelegate()

</ApiSignature>

getRoomDelegate：com.herewhite.sdk.Room 的公开成员。参数和返回类型见下方签名。
