教学白板是线上教育系统中的重要功能之一,有了它,讲师才能像在线下课堂的黑板上一样,板书内容,标记,甚至可以上传多媒体课件,和学员进行共享桌面操作。接下来,小编就以微擎版线上教育系统开发为例,来为大家演示下,其中的白板功能是如何实现的。
1.将sdk集成到项目中,在对应module的gradle下添加依赖:
implementation 'com.github.duty-os:white-sdk-android:2.7.6'
另外项目的build.gradle还需要添加:
maven { url "https://jitpack.io" }
2.初始化sdk并添加相关view:
protected WhiteSdk mWhiteSdk;//白板sdk
//白板操作时的相关配置
WhiteSdkConfiguration configuration = new WhiteSdkConfiguration(DeviceType.touch, 2, 0.2,true);
configuration.setUserCursor(true);
mWhiteSdk = new WhiteSdk(mIWhiteBoardView.getWhiteBoardView(), mContext, configuration,new UrlInterrupter() {
@Override
public String urlInterrupter(String sourceUrl) {
return sourceUrl;
}
});
// WhiteboardView实质上是webview,所以考虑到webview内存泄漏的问题,WhiteboardView最好动态生成
private WhiteboardView mWhiteboardView;
mWhiteboardView = new WhiteboardView(mContext);
3.创建好房间,并加入房间,可设置视角模式,设置缩放比例,调整视角中心等
//加入房间需要uuid,roomtoken
HashMap<String, String> payload = new HashMap<>();
if(userBean!=null){
String avatar=userBean.getAvatar_thumb();
payload.put("avatar",avatar);
}
RoomParams roomParams = new RoomParams(mUUid, mRoomToken);
roomParams.setUserPayload(payload);
WhiteSdk.joinRoom(roomParams, roomCallbacks,(Promise<Room>) mPromise);
//设置视角跟随主播模式
mRoom.setViewMode(ViewMode.Follower);
4.加入房间成功,并设置了操作权限后,便可操作白板。
/**
* 是否可写
*/
public void setWritable(boolean isable,Promise<Boolean> promise){
if(mRoom==null){
return;
}
if(mRoom.getWritable()==isable&&promise!=null){
promise.then(true);
return;
}
mRoom.setWritable(isable, promise);
}
调用MemberState的相关api可以进行相关教具操作。
5.退出房间,一定要释放相关资源。
例如:
if (mRoot != null) {
mRoot.removeView(mWhiteboardView);
}
if (mWhiteboardView != null) {
mWhiteboardView.stopLoading();
// 退出时调用此方法,移除绑定的服务,否则某些特定系统会报错
mWhiteboardView.getSettings().setJavaScriptEnabled(false);
mWhiteboardView.clearHistory();
mWhiteboardView.clearView();
mWhiteboardView.removeAllViews();
mWhiteboardView.destroy();
}
if (mWhiteBoardPresenter != null) {
mWhiteBoardPresenter.release();
}
mWhiteboardView = null;
mWhiteBoardPresenter = null;
以上,就是微擎版线上教育系统开发中,白板功能的实现过程。