前提条件

你可以通过阅读密钥说明了解更多 Token 相关。

集成SDK
Maven 方式
  1. 在根目录下的 build.gradle 文件中,配置 maven 仓库地址,如下所示:
allprojects {
    repositories {
        ...
        maven { url "https://artifact.bytedance.com/repository/Volcengine/" }
        
    }
}
groovy
  1. 为模块配置构建配置。在 app/build.gradle 文件中添加配置和依赖。可以根据实际需要指定 SDK 和 gson 的版本。
dependencies {
    ...
    implementation 'com.volcengine:VolcEngineWhiteboard:1.5.1'
    implementation 'com.google.code.gson:gson:2.8.5'
    
}
groovy
离线方式
  1. 将工程视图修改为 Project 模式,下载 VolcEngineWhiteboard ,复制粘贴到 app/libs/ 目录下。

alt

  1. 在 app 模块的 build.gradle 文件中,增加如下 dependencies,引入 libs 目录下的 aar。
implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
groovy
实现功能
基础白板使用 API 时序图

API

1. 调用前置 API

绑定设备 ID,方便定位和排查问题。

WhiteBoardRoomManager.setDeviceID(deviceID); 
java
2. 创建白板实例
  1. 创建 WhiteBoardRoomManager 来创建和管理 WhiteBoardRoom。
WhiteBoardRoomManager.create(context, appId, viewGroup, new OnResult<WhiteBoardRoomManager>() {
    @Override
    public void onSuccess(WhiteBoardRoomManager whiteBoardRoomManager) {

    }

    @Override
    public void onError(String errorCode) {
    }
});
java
加入白板房间
  1. 加入 WhiteBoardRoom
    调用 joinRoom 加入白板房间。如果当前房间还没有白板会自动创建。

注意

  • 白板房间 roomID 不能与 RTC 房间 roomID 相同。以免影响白板房间和 RTC 房间内回调提醒相互影响。建议为白板房间名加上 whiteboard_ 前缀。
  • 白板用户 userID 不能与 RTC userID 相同。
  • 参考 开通服务 获取 Token。
whiteboardRoomManager.joinRoom(roomID, userID, token, null, roomEventHandler, new OnResult<WhiteBoardRoom>() {
    @Override
    public void onSuccess(WhiteBoardRoom whiteBoardRoom) {
  
    }

    @Override
    public void onError(String errorCode) {

    }
});
java

白板服务在当前用户加入白板房间后开始计费,直到该用户调用 leaveRoom 退出房间后停止计费。建议在即将使用白板前创建白板实例。并结束使用后及时销毁白板实例。

  1. 获取房间内所有白板的信息。
    加入房间后,SDK 将通过 onCurrentWhiteBoardChanged 回调当前活跃的白板信息。
@Override
public void onCurrentWhiteBoardChanged(String userId, int activeBoardId, WhiteBoard whiteBoard) {
}
java

如果房间内白板数量为 0,将自动创建白板并触发 onCreateWhiteBoard。通过本回调,你可以获取到白板对象。

@Override
public void onCreateWhiteBoard(String userId, int boardId, WhiteBoard whiteBoard) {
}
java
  1. 通过白板对象的 IWhiteBoardEventHandler,你可以监听页面的创建和状态变化。
whiteboard.setEventHandler(boardEventHandler);
java
@Override
public void onCreateWhiteBoard(WhiteBoard whiteboard, int elapsed) {
    if (whiteBoard = null) return;
     whiteBoard.setEventhandler(boardEventHandle
}
java
使用白板

选择编辑模式后。触摸白板容器可以使用编辑功能,详见 EditType。

@Override
public void onCreateWhiteBoard(WhiteBoard whiteboard, int elapsed) {
    if (whiteBoard = null) return;
     whiteBoard.setEventhandler(boardEventHandle
}
java
结束使用白板

在结束白板使用时,释放资源的步骤如下。

  1. 离开房间和销毁房间。
    whiteboardRoom.leaveRoom();
    whiteboardRoomManager.destroyWhiteBoardRoom(whiteboardRoom);
java

除了用户主动结束使用之外,在监听到以下错误时,你也需要调用上述接口,执行离房操作。

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")) {
            // 退出房间逻辑
        }
    }
}
java
  1. 销毁引擎,释放资源
public void release() {
    if (whiteboardRoom != null) {
        whiteboardRoom.leaveRoom();
        whiteboardRoomManager.destroyWhiteBoardRoom(whiteboardRoom);
        whiteboardRoom = null;
    }
    whiteboardRoomManager = null;
    WhiteBoardRoomManager.destroy();
}
java