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

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);}

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();}}
………

3.加入房间:

public void joinRoom(String roomId){mAgoraLivePresenter.joinRoom(roomId);
}

4.监听直播房间内视频流的变化,即时添加视图:

@Override
public void onFirstRemoteVideoDecoded(final int uid, final int width,final int height, int elapsed)
mAgoraLivePresenter.mCurrentHandler.post(new Runnable() {@Overridepublic void run() {if(mAgoraLivePresenter!=null){mAgoraLivePresenter.readyVideoRemote(uid,width,height);}}
});

5.退出直播课堂,及时销毁相关资源避免内存泄漏:

if (mRtcEngine != null) {mRtcEngine.leaveChannel();mRtcEngine.setupLocalVideo(null);mRtcEngine.setupRemoteVideo(null);
}
Observable.just(true).observeOn(Schedulers.computation()).subscribe(new DefaultObserver<Boolean>() {@Overridepublic void onNext(Boolean aBoolean) {SystemUtil.logCurrentThread();RtcEngine.destroy();}
});

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

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

  1. 在线教育平台开发需求分析

    随着互联网的不断发展,现代信息技术向教育行业迅速扩展,教育的方式也不再是传统面对面的书本传授了,线下模式正面临着前所未有的严峻挑战,同时也面临着前良好的发展机遇-在线教育平台开发需求旺盛.它打破了传统 ...

  2. 在线教育平台开发:线上教育前景预测

    说起在线教育平台开发相信大家都不会陌生,它包通过现今的数字化技术实现视频.音频.图片.文字.声音的同步传输,方便快捷地实现师生在网络上的交互学习.有些人将在线教育归类于现代远程教育,总而言之在线教育是 ...

  3. 在线教育平台开发的“前世今生”

    在线教育平台开发的发展史还要从最早时期的教育说起.当时教育的标签是小范围且没有固定概念的,后来成熟之后推行的私塾制,师傅会教导徒弟,可以换算成如今的师生关系,譬如当时孔子的门下共有七十二个学生,学生的 ...

  4. 在线教育平台开发的影响和意义

    教育,无论在何时,都是非常重要的,移动互联网的到来,也带动了教育的发展,从儿童的早教开始,到老年人的继续教育中,都有在线教育的影子,换句话说,在线教育已经渗透到学习生活的方方面面.随着社会的进步和发展 ...

  5. 在线教育软件开发的目的是什么?

    在线教育在如火如荼地进行,从近几年开始,在线教育也越来越流行,同时在线教育的形式也多种多样,那么在线教育软件开发中需要加入哪些功能才能更好地满足教学的需要呢? 1.在线学习系统 通过在线的互动交流来促 ...

  6. 如何进行在线教育app开发

    当国内大学开始为学生进行在线教育app开发时,大学的移动开发团队需要专注于一个概念:以学生为主进行设计.在线教育app开发团队可以从其他行业的创新和成功的在线教育app开发中获取线索,包括Facebo ...

  7. Java怎么做三端_Java三端分离开发在线教育平台

    第1章 课程项目整体概述(整体介绍及Eclipse,Maven,新浪SAE软件平台介绍) 系统通过maven构建一个portal站,在sae上部署,让同学们感受一下互联网应用的魅力: 1-1 --课程 ...

  8. 在线教育平台的开发与设计(Python+Django+MySQL)

    目 录 摘 要 I Abstract II 第1章 绪论 1 1.1 课题研究背景 1 1.2研究现状 2 1.3课题研究内容及思路 3 第2章 系统需求分析 5 2.1系统的性能要求 5 2.2系统 ...

  9. Django项目于之在线教育平台网站的实战开发(三)

    说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 接着上一篇博客继续往下写 :Django项目于之在线教育平台网站的实战开发(二)_cdtaogang's blog-CSDN博客 ...

最新文章

  1. GoLand配置数据库、远程host以及远程调试
  2. SSIS中循环遍历组件[Foreach Loop Container]
  3. mysql 索引查询_mysql索引的建立和查询语句优化
  4. Type Casting
  5. 计算机PMA,PMA通信协议分析及仿真工具
  6. easyui datagrid java_EasyUI DataGrid 显示不了数据????
  7. 1.7编程基础之字符串 06 合法 C 标识符 python
  8. datatable 转list
  9. arduino 步进电机驱动库_一文看懂arduino驱动uln2003操作步进电机的方法
  10. m5310模组数据上传至onenet_基于Semtech SX1276RF1KAS SPI模组及ATMEGA328架构下之烟雾气体感测方案...
  11. 解决outlook不能显示鼠标问题
  12. 前端笔试能查吗_鹅厂微博前端实习面经
  13. 团队项目:个人工作总结06
  14. 使用PHP输出中文JSON字符串
  15. mysql amd.dll 后门_DLL型后门原理及完全清除秘诀
  16. 【小麦苗课堂】高可用培训(RAC+DG+OGG)--包括11g、12c、18c、19c等版本
  17. 字节跳动技术评级与面试
  18. C语言及程序设计 实践参考——个人所得税计算器switch语句版
  19. kong笔记——kong/konga的搭建
  20. Hadoop的集群搭建及HDFS命令

热门文章

  1. 如何配置选择CH341芯片功能
  2. Project Web Access 2007自定义FORM验证登录实现 zt
  3. 基于LDA对关注的微博用户进行聚类
  4. 保证一天不困的25个小方法
  5. 百度语音识别、语音合成,NAudio录音(C#)
  6. SonarQube 安装
  7. 数据仓库是什么?它有什么用?一文带你全了解
  8. CSS系列之圆角边框(CSS3)
  9. Casper(CSPR)已在Metal Pay上线,进一步整合到现有的商业模式中
  10. 广西首位女云计算HCIE在南职院诞生