教年轻 AIoT 创业者如何从 0 到 1 实现AIoT 创业项目 了解详情
写点什么

如何在 React Native 中实现视频通话(下)

  • 2019-11-30
  • 本文字数:1527 字

    阅读完需:约 5 分钟

如何在 React Native 中实现视频通话(下)

该 return()方法为 Sample App 显示视图。AgoraRendererView 是用来显示音频/视频的 UI 元素。示例应用程序创建了两个 AgoraRendererView 元素,即_localView 和_remoteView。


 1return( 2    <View style = {styles.container}>  3    <AgoraRendererView  4        ref = {component => this._localView = component}  5        style = {{width:360,height:240}}  6    />  7 8    <AgoraRendererView  9        ref = {component => this ._remoteView = component} 10        style = {{width:360,height:240}} 11    /> 1213    ... 1415    </ View> 16);
复制代码


然后在 return()添加 UI 按钮元素让用户能够加入频道、离开频道、切换摄像头、切换音频线路。详细代码请见「阅读原文」。

加入频道

使用_joinChannel()方法将用户加入特定频道。


1_joinChannel(){ 2    ... 3}
复制代码


在_joinChannel()方法中,以下方法执行其他任务:


AgoraRtcEngine.setLocalVideoView() 设置本地视频 view。


Sample App 将本地视频 view 应用于在 render()中创建的_localViewUI 元素。


1AgoraRtcEngine.setLocalVideoView(this._localView,AgoraRtcEngine.AgoraVideoRenderModeFit);
复制代码


AgoraRtcEngine.setVideoProfile()将视频配置文件设置为默认的 Agora 配置文件,且不更改 orientation 属性。


1AgoraRtcEngine.setVideoProfile(AgoraRtcEngine.AgoraVideoProfileDEFAULT,false);
复制代码


AgoraRtcEngine.startPreview()启动 Agora SDK 预览,并让 AgoraRtcEngine.joinChannel()加入频道。


1AgoraRtcEngine.startPreview(); 2AgoraRtcEngine.joinChannel(null,“rnchannel01”,“React Native for Agora RTC SDK”,0);
复制代码


上述代码中 joinChannel 的参数设置是这样的:


  • token 为 null。加入通道后,Agora Engine 将设置 token 为新值。

  • 频道名为 rnchannel01

  • info 记录了关于频道的信息“React Native for Agora RTC SDK”

  • uid 为 0,这是通用用户 ID 值

离开频道

Sample App 应用了_leaveChannel(),会调用 AgoraRtcEngine.stopPreview()和 AgoraRtcEngine.leaveChannel()。需要注意的是,_leaveChannel()不会自动停止预览,因此需要先调用 stopPreview()。


1_leaveChannel(){ 2    AgoraRtcEngine.stopPreview(); 3    AgoraRtcEngine.leaveChannel(); 4}
复制代码

切换相机

Sample App 中,我们通过 AgoraRtcEngine.switchCamera()切换摄像头。


1switchCamera(){ 2    AgoraRtcEngine.switchCamera(); 3}
复制代码

切换 Audio Route

调用 AgoraRtcEngine.setEnableSpeakerphone()打开或关闭扬声器。这里需要注意由于 isSpeakerPhone 用于全局检测用户是否处于扬声器模式,所以在 setEnableSpeakerphone 后必须更改。


1_switchAudio(){ 2    AgoraRtcEngine.setEnableSpeakerphone(isSpeakerPhone); 3    isSpeakerPhone =!isSpeakerPhone; 4}
复制代码

添加事件监听器

通过 agoraKitEmitter.addListener()添加 remoteDidJoineChannelNoti 事件侦听器来检测远程用户加入频道的动作。


事件监听器的名称是 RemoteDidJoinedChannel。触发时,它会执行以下操作:


  • 将远程视频视图添加到_remoteView

  • 为用户应用远程视频视图,notify.uid

  • 保证视频内容全部显示


1remoteDidJoineChannelNoti = agoraKitEmitter.addListener(2    'RemoteDidJoinedChannel',3    (notify)=> { 4        AgoraRtcEngine.setRemoteVideoView(this._remoteView,notify.uid,AgoraRtcEngine.AgoraVideoRenderModeFit); 5    } 6  );
复制代码


在 React Native 视图移除后,调用 remoteDidJoineChannelNoti.remove()来移除事件侦听器。


本文转载自公众号声网 Agora(ID:shengwang-agora)。


原文链接:


https://mp.weixin.qq.com/s/uuU0ujJm71yZZW2Vg5Zniw


活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

2019-11-30 22:07763

评论

发布
暂无评论
发现更多内容

Week 02 命题作业

卧石漾溪

极客大学架构师训练营

LinkedList竟然比ArrayList慢了1000多倍?(动图+性能评测)

王磊

Java 数据结构 性能优化 性能 链表

程序一定要从main函数开始运行吗?

泰伦卢

c++

架构师训练营第二周 - 学习总结

Eric

架构是训练营

架构师训练营第二周作业

James-Pang

极客大学架构师训练营

关于问问题和时间管理的感悟

cxuan

程序员 程序人生

后疫情时代给技术经济发展带来的挑战和机遇

CECBC

区块链技术 林左鸣 机遇与挑战

【大厂面试05期】说一说你对MySQL中锁的理解?

NotFound9

Java MySQL 后端

Spring-资源加载

CoderLi

Java spring 程序员 后端 Java 25 周年

架构师训练营-课后作业-Week-2

Chasedreamer

Spring 容器的初始化

CoderLi

Java spring 程序员 源码分析 后端

以太坊颠覆了以太坊:引入密码学实现2.0性能突破

安比实验室SECBIT

以太坊 分布式系统 节点 密码学

Spring 获取单例流程(三)

CoderLi

Java spring 程序员 源码分析 后端

Easy-Monitor 3.0 开源 - 基于 Egg 的 Node.js 性能监控解决方案

hyj1991

node.js 开源 大前端

Java 诊断利器 Arthas 优雅排查生产环境

ytao

别教我女儿该怎么穿,教你儿子别去强奸

小天同学

教育 日常思考 个人感悟 自我保护

CDN百科第四讲 | 如何优雅地在云上“摆摊”——做直播带货,你不得不关注的技术

阿里云Edge Plus

CDN 边缘计算 直播 直播带货

Spring 获取单例流程(一)

CoderLi

Java spring 程序员 源码分析 后端

架构师训练营第二周 - 作业

Eric

极客大学架构师训练营

iOS Universal link 30分钟入门指南

行者

ARTS 第 2 周

乌拉里

程序员人人都会遇到的“画饼”,一招教你破解

金刚小书童

程序员 职业规划 技术管理 画饼

618 将至,融云通信云技术如何助力电商销售

Geek_116789

编译Spring5.2.0源码

CoderLi

Java spring 程序员 后端 Java 25 周年

ARTS-Week Four

shepherd

Java algorithm

Spring-AliasRegistry

CoderLi

Java spring 程序员 源码分析 后端

Spring 获取单例流程(二)

CoderLi

Java spring 程序员 源码分析 后端

谈谈程序链接及分段那些事

泰伦卢

c++

分布式锁:效率与正确性的衡权

伴鱼技术团队

后端 分布式协同 分布式锁 服务器 分布式架构

架构师训练营第 2 周——学习总结

在野

极客大学架构师训练营

数字产品开发那些事

涛哥 数字产品和业务架构

产品开发 数字化

  • 扫码添加小助手
    领取最新资料包
如何在 React Native 中实现视频通话(下)_文化 & 方法_声网_InfoQ精选文章