获取 AppID,参考 开通服务。
获取 Token,参考 密钥说明。
支持 Android API Level 17 及以上版本的设备。
请确保你的项目已设置有效的开发者签名。
支持的设备架构为 arm64 或 armv7a。
build.gradle
文件中,配置 maven 仓库地址,如下所示:allprojects { repositories { ... maven { url "https://artifact.bytedance.com/repository/Volcengine/" } } }
app/build.gradle
文件中添加配置和依赖。可以根据实际需要指定 SDK 和 gson 的版本。dependencies { ... implementation 'com.volcengine:VolcEngineWhiteboard:1.5.1' implementation 'com.google.code.gson:gson:2.8.5' }
app/libs/
目录下。build.gradle
文件中,增加如下 dependencies,引入 libs 目录下的 aar。implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
绑定设备 ID,方便定位和排查问题。
WhiteBoardRoomManager.setDeviceID(deviceID);
调用 create,创建 WhiteBoardRoomManager
来创建和管理 WhiteBoardRoom
。
WhiteBoardRoomManager.create(context, appId, viewGroup, new OnResult<WhiteBoardRoomManager>() { @Override public void onSuccess(WhiteBoardRoomManager whiteBoardRoomManager) { } @Override public void onError(String errorCode) { } });
appid
为你申请的应用 ID,详见 开通服务。viewGroup
为承载白板的父 View。onSuccess
回调创建的 WhiteBoardRoomManager
对象。onError
回调创建失败错误信息。joinRoom
加入白板房间。如果当前房间没有白板,SDK 将自动创建白板。leaveRoom
退出房间后停止计费。建议在即将使用白板前创建白板实例。并结束使用后及时销毁白板实例。roomEventHandler
可以监听房间创建、人数、以及白板创建事件。onSuccess
: 加入房间成功并返回当前房间对象 。onError
:回调进房失败错误信息。说明
- 白板房间 roomID 不能与 RTC 或 RTS 房间的 roomID 相同。以免影响白板房间和 RTC 房间内回调提醒相互影响。建议为白板房间名加上
whiteboard_
前缀。- 白板用户 userID 不能与 RTC 或 RTS 的 userID 相同。
- 参考 使用 Token 完成鉴权 获取 Token。Token 有效时长应大于单次白板互动时长。例如, 24 小时。
whiteboardRoomManager.joinRoom(roomID, userID, token, null, roomEventHandler, new OnResult<WhiteBoardRoom>() { @Override public void onSuccess(WhiteBoardRoom whiteBoardRoom) { } @Override public void onError(String errorCode) { } });
@Override public void onCurrentWhiteBoardChanged(String userId, int activeBoardId, WhiteBoard whiteBoard) { }
如果房间内白板数量为 0,将自动创建白板并触发 onCreateWhiteBoard。通过本回调,你可以获取到白板对象。
获取白板对象 WhiteBoard 后,你可以通过接口中的方法操作该对象。举例如下:
@Override public void onCreateWhiteBoard(WhiteBoard whiteboard, int elapsed) { if (whiteBoard = null) return; whiteboard.setEventHandler(boardEventHandler); }
whiteboard.setEditType(editType); whiteboard.setWritable(true);
在结束白板使用时,释放资源的步骤如下。
whiteboardRoom.leaveRoom(); whiteboardRoomManager.destroyWhiteBoardRoom(whiteboardRoom);
除了用户主动结束使用之外,在监听到以下错误时,你也需要调用上述接口,执行离房操作。
private final IWhiteBoardRoomEventHandler roomEventHandler = new IWhiteBoardRoomEventHandler() { @Override public void onError(String errCode, String message) { if (Objects.equals(errCode, "KICKED_OUT") || Objects.equals(errCode, "DUPLICATE_LOGIN") || Objects.equals(errCode, "INVALID_TOKEN")) { // 退出房间逻辑 } } } private final IWhiteBoardEventHandler boardEventHandler = new IWhiteBoardEventHandler() { @Override public void onError(String errCode, String message) { if (Objects.equals(errCode, "KICKED_OUT") || Objects.equals(errCode, "DUPLICATE_LOGIN") || Objects.equals(errCode, "INVALID_TOKEN")) { // 退出房间逻辑 } } }
public void release() { if (whiteboardRoom != null) { whiteboardRoom.leaveRoom(); whiteboardRoomManager.destroyWhiteBoardRoom(whiteboardRoom); whiteboardRoom = null; } whiteboardRoomManager = null; WhiteBoardRoomManager.destroy(); }