前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在线教育平台开发中,如何接入sdk实现小班课

在线教育平台开发中,如何接入sdk实现小班课

原创
作者头像
万岳教育系统
修改2020-06-23 10:17:53
6890
修改2020-06-23 10:17:53
举报

在线教育平台开发过程中,有些功能并不是通过公司一手打造的,而是通过接入第三方实现的,因为相比于重新开发,接入第三方反而更加保险和稳定,接下来,小编将以声网sdk接入为例,来说明在线教育平台中的小班课是如何实现的。

代码语言:javascript
复制
1. 定义接口类别
public interface ILivePresenter  {
    /*切换角色*/
    public void changeRole(int role);
    /*是否禁音*/
    public void muteAudio(boolean isMute);
    /*是否禁视频*/
    public void muteVideo(boolean openVideo);
    /*获取当前直播状态*/
    public LiveState getLiveState();
    /*离开课堂*/
    public void leaveRoom();
    /*进入课堂*/
    public void joinRoom(String roomId);
    /*销毁课堂*/
    public void destroy();
    /*更新视图*/
    public void updateSuface(String uid);
    /*设置远程内容更新*/
    public void setRemoteUserStateChangeListner(IRemoteUserStateChangeListner changeListner);

}
代码语言:javascript
复制
2. 利用声网sdk实现接口
public class AgoraLivePresenter  implements ILivePresenter {

    private ILiveView<SurfaceView> mILiveView;
    private RtcEngine mRtcEngine;
    private IRtcEngineEventHandler mIRtcEngineEventHandler;
    private int mUid;
    private LiveState mLiveState;
    private LinkedHashSet<Integer>mprePareUserList;

    private CurrentHandler mCurrentHandler=new CurrentHandler();
    private IRemoteUserStateChangeListner mIRemoteUserStateChangeListner;

    public AgoraLivePresenter(@Nullable ILiveView liveView,String appId,int id ) {
        this.mILiveView=liveView;
        mprePareUserList=new LinkedHashSet<>();
        mUid=id;
        mLiveState=new LiveState();
        try {
            Context context= CommonAppContext.sInstance;
            mIRtcEngineEventHandler=new EngineEventHandler(this);
            mRtcEngine = RtcEngine.create(context,appId, mIRtcEngineEventHandler);
            mRtcEngine.setChannelProfile(io.agora.rtc.Constants.CHANNEL_PROFILE_LIVE_BROADCASTING);
            mRtcEngine.setParameters("{\"che.audio.live_for_comm\":true}");
            mRtcEngine.setLogFile(AFileUtil.initializeLogFile(context));
            mRtcEngine.setChannelProfile(Constants.CHANNEL_PROFILE_LIVE_BROADCASTING);
            mRtcEngine.setBeautyEffectOptions(true, new BeautyOptions(LIGHTENING_CONTRAST_NORMAL, 0.5F, 0.5F, 0.5F));
            setupVideoConfig();
        } catch (Exception e) {
            e.printStackTrace();
        }
    } 
………
代码语言:javascript
复制
3. 加入房间:
public void joinRoom(String roomId){
    mAgoraLivePresenter.joinRoom(roomId);
}
代码语言:javascript
复制
4. 监听直播房间内视频流的变化,即时添加视图:
@Override
public void onFirstRemoteVideoDecoded(final int uid, final int width,final int height, int elapsed)
mAgoraLivePresenter.mCurrentHandler.post(new Runnable() {
    @Override
    public void run() {
        if(mAgoraLivePresenter!=null){
          mAgoraLivePresenter.readyVideoRemote(uid,width,height);
        }
    }
});
代码语言:javascript
复制
5. 退出直播课堂,及时销毁相关资源避免内存泄漏:
if (mRtcEngine != null) {
    mRtcEngine.leaveChannel();
    mRtcEngine.setupLocalVideo(null);
    mRtcEngine.setupRemoteVideo(null);
}
Observable.just(true).observeOn(Schedulers.computation()).subscribe(new DefaultObserver<Boolean>() {
    @Override
    public void onNext(Boolean aBoolean) {
        SystemUtil.logCurrentThread();
        RtcEngine.destroy();
    }
});

以上在线教育平台开发中,如何利用声网sdk实现小班课。

声明:以上内容为作者本人原创,未经作者本人同意,禁止转载,否则将追究相关法律责任。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云直播
云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档