腾讯云互动白板(Tencent Interactive Whiteboard,TIW)提供整套完备的多人实时白板互动服务,打破线上教学中师生信息传递障碍,拥有比面授教学板书更丰富、直观和多样的功能。包含的功能有互动涂鸦、轨迹实时同步、文档共享、媒体共享、文档转码、白板与音视频实时同步录制、回放等功能。具备灵活易用、扩展性强的优点,帮助用户高度还原线下面授教学的互动体验,显著提升线上教学质量。
环境配置
//根据官网最新版本接入
implementation 'com.tencent.teduboard:TEduBoardSdk:2.5.6.85'
defaultConfig{
ndk{
abiFilters "armeabi", "armeabi-v7a", "arm64-v8a"
}
}
白板初始化
//通过TRTC Manager获取白板控制器对象 权限WRITE/READ STORAGE
TEduBoardController mBoardController = mTicManager.getBoardController();
//获取白板的View
View boardView = mBoardController.getBoardRenderView();
//这里指定了一下白板的大小,根据业务判断是否添加
boardView.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
//将白板加入FrameLayout容器中
mBinding.flRoomWhiteboard.addView(boardView);
关键方法
加载多个带有图片的白板
mBoardController.reset(); //重置白板
List<String> imageUrls = new ArrayList<String>();
mBoardController.addImagesFile(imageUrls);
白板翻页
mBoardController.prevBoard(); //上一页
mBoardController.nextBoard(); //下一页
白板画笔
mBoardController.setToolType(TEduBoardController.TEduBoardToolType.TEDU_BOARD_TOOL_TYPE_PEN);
mBoardController.setDrawEnable(true); //开启或关闭绘制
白板橡皮擦
mBoardController.setDrawEnable(true); //开启或关闭橡皮擦
mBoardController.setToolType(TEduBoardController.TEduBoardToolType.TEDU_BOARD_TOOL_TYPE_ERASER);
清空白板
mBoardController.clear(false,false);
白板缩放
int currentScale = mBoardController.getBoardScale(); //获得当前的缩放比例
mBoardController.setBoardScale(targetScale); //设置缩放比例 最高300 最低100
白板拖拽
mBoardController.setDrawEnable(true); //开启或关闭白板拖拽
mBoardController.setToolType(TEduBoardController.TEduBoardToolType.TEDU_BOARD_TOOL_TYPE_ZOOM_DRAG);
获取白板页数和白板文件相关
String currentFileId = mRoomActivity.mBoardController.getCurrentFile(); //获得当前白板的文件ID
String currentBoardId = mRoomActivity.mBoardController.getCurrentBoard(); //获得当前白板的ID
List<String> fileList = mRoomActivity.mBoardController.getFileBoardList(currentFileId); //通过文件ID获得白板的ID列表
事件监听
public class MyWhiteBoardListener implements TEduBoardController.TEduBoardCallback {
@Override
public void onTEBError(int i, String s) {
//白板发生错误 错误码i 错误信息s
}
@Override
public void onTEBWarning(int i, String s) {
//白板发生警告 警告码i 警告信息s
}
@Override
public void onTEBInit() {
//白板初始化完成
mBoardController.setDrawEnable(true); //默认开启绘制
mBoardController.setDataSyncEnable(true); //开启白板历史数据同步
mBoardController.setBoardRatio("3:4"); //设置白板比例,可以不加
//在这里可以初次加载白板内容
}
@Override
public void onTEBHistroyDataSyncCompleted() {
//白板历史记录同步完成
}
@Override
public void onTEBSyncData(String s) {
//白板同步数据
}
@Override
public void onTEBUndoStatusChanged(boolean b) {
//白板可撤销状态改变
}
@Override
public void onTEBRedoStatusChanged(boolean b) {
//白板可重做状态改变
}
@Override
public void onTEBImageStatusChanged(String s, String s1, int i) {
switch (i){
case TEduBoardController.TEduBoardImageStatus.TEDU_BOARD_IMAGE_STATUS_LOADING:
//背景图片加载中
break;
case TEduBoardController.TEduBoardImageStatus.TEDU_BOARD_IMAGE_STATUS_LOAD_DONE:
//背景图片加载完成
break;
case TEduBoardController.TEduBoardImageStatus.TEDU_BOARD_IMAGE_STATUS_LOAD_ABORT:
//背景图片加载中断
break;
case TEduBoardController.TEduBoardImageStatus.TEDU_BOARD_IMAGE_STATUS_LOAD_ERROR:
//背景图片加载错误
break;
case TEduBoardController.TEduBoardImageStatus.TEDU_BOARD_IMAGE_STATUS_LOAD_TIMEOUT:
//背景图片加载超时
break;
case TEduBoardController.TEduBoardImageStatus.TEDU_BOARD_IMAGE_STATUS_LOAD_CANCEL:
//背景图片取消加载 一般可以在这里去刷新刷新白板
break;
case TEduBoardController.TEduBoardImageStatus.TEDU_BOARD_IMAGE_STATUS_READ_ERROR:
//本地图片加载错误
break;
}
}
@Override
public void onTEBSetBackgroundImage(String s) {
//设置白板背景图片 s图片地址
}
@Override
public void onTEBAddImageElement(String s) {
//添加图片元素 这个最好不要用,多次添加图片会叠在白板上
}
@Override
public void onTEBAddElement(String s, String s1) {
//添加元素
}
@Override
public void onTEBBackgroundH5StatusChanged(String s, String s1, int i) {
//白板背景 H5 状态改变
}
@Override
public void onTEBAddBoard(List<String> list, String s) {
//添加白板页 这里可以设置白板的显示比例和填充模式
mBoardController.setBoardRatio("3:4");
mBoardController.setBoardContentFitMode(TEduBoardController.TEduBoardContentFitMode.TEDU_BOARD_CONTENT_FIT_MODE_CENTER_INSIDE);
}
@Override
public void onTEBDeleteBoard(List<String> list, String s) {
//删除白板页
}
@Override
public void onTEBGotoBoard(String s, String s1) {
//切换白板
}
@Override
public void onTEBGotoStep(int currentStep, int totalStep) {
//白板跳转
}
@Override
public void onTEBRectSelected() {
}
@Override
public void onTEBRefresh() {
//刷新白板
}
@Override
public void onTEBAddTranscodeFile(String s) {
Log.d("白板事件","增加转码文件");
}
@Override
public void onTEBDeleteFile(String s) {
Log.d("白板事件","删除文件");
}
@Override
public void onTEBSwitchFile(String s) {
Log.d("白板事件","切换文件");
}
@Override
public void onTEBFileUploadProgress(String s, int i, int i1, int i2, float v) {
Log.d("白板事件","文件上传进度:"+s);
}
@Override
public void onTEBFileUploadStatus(String s, int i, int i1, String s1) {
Log.d("白板事件","文件上传状态");
}
@Override
public void onTEBFileTranscodeProgress(String s, String s1, String s2, TEduBoardController.TEduBoardTranscodeFileResult tEduBoardTranscodeFileResult) {
}
@Override
public void onTEBH5FileStatusChanged(String s, int i) {
Log.i("白板事件","H5文件变化:"+s);
}
@Override
public void onTEBAddImagesFile(String s) {
Log.i("白板事件","添加白板URL:"+s);
}
@Override
public void onTEBVideoStatusChanged(String s, int i, float v, float v1) {
}
@Override
public void onTEBAudioStatusChanged(String s, int i, float v, float v1) {
}
@Override
public void onTEBSnapshot(String s, int i, String s1) {
Log.d("白板事件","白板快照");
}
@Override
public void onTEBH5PPTStatusChanged(int i, String s, String s1) {
}
}