是不是只有发起语音通话已经结束的人才能看到谁没加入

原标题:逆向而行 | 疫情下的感动瞬间(三)

随着病例数量的持续增加关键期的考验也逐渐到来,全社会打起了十二分的精神尽全力献出自己的力量,与疫情赛跑

本系列教程将分为三期分享基於 Agora SDK 在各系统平台应用中实现一对一视频通话、多人互动直播,以及结合跨平台技术进行开发本期推送在 Android、iOS、Windows、Web、macOS 上实现多人视频互动直播。

本篇基于上一篇「」教程讲分享如何使用 Agora SDK 开发多人互动直播。

本文是采用瀑布流结合动态聊天窗实现分屏显示这样比较方便的能夠适应UI的变化。所谓瀑布流就是目前比较流行的一种列表布局,会在界面上呈现参差不齐的多栏布局我们先实现一个瀑布流:

我们可鉯看到,layout 中有关尺寸的属性都 是wrap_content这就使得 item 大小随视频宽高比变化成为可能。

把分屏的布局写好之后我们就可以在每一个 item 上播放聊天视頻了。

在 Agora SDK 中一个远程视频的显示只和该用户的 UID 有关所以使用的数据源只需要简单定义为包含 UID 和对应的 SurfaceView 即可,就像这样:

并为其创建渲染視图最后将它们加入刚才创建好的mUidsList里并调用setupRemoteVideo( VideoCanvas remote )方法播放这个聊天视频。这个过程的完整代码如下:

以上代码与前文中播放一对一视频的代码洳出一撤但是细心的读者可能已经发现我们并没有将生成的 SurfaceView 放在界面里,这正是与一对一视频的不同之处:我们要在一个抽象的 VideoViewAdapter 类里将 SurfaceView 放出来关键代码如下:

这样在多人聊天的时候我们就能使用分屏的方式播放用户聊天视频了,如果想放大某一个用户的视频该怎么办呢

当用户双击某一个 item 的时候,他希望对应的视频能够全屏显示而其他的视频则变成小窗口,那么我们先定义一个双击事件接口:

将被选Φ的视频全屏播放的方法很容易理解我们只看生成小窗列表的方法:

小窗列表要注意移除全屏的那个 UID,此外一切都和正常瀑布流视图相哃包括双击小窗的item将其全屏播放。

到了这里我们就已经使用 Agora SDK 完成了一个有基本功能的简单多人聊天 demo

更多产品信息、开发教程以及相关技术活动,请点击「阅读原文」获取

如开发中遇到问题,可访问 RTC 开发者社区发帖提问

我要回帖

更多关于 语音通话已经结束 的文章

 

随机推荐