今天,给大家讲一下怎么实现1v1音视频通话,以下是教程内容:
开发环境
开发环境要求如下:
环境要求 | 说明 |
---|---|
JDK 版本 | 1.8.0 及以上版本 |
Android API 版本 | API 21、Android Studio 5.0 及以上版本 |
CPU架构 | ARM 64、ARMV7 |
IDE | Android Studio |
其他 | 依赖 Androidx,不支持 support 库。 |
注意事项
1 对 1 娱乐社交场景方案的呼叫能力基于云信呼叫组件,
技术原理
一对一通话功能页面结构如下:
页面 | 描述 |
---|---|
CallActivity | 呼叫页&&通话页容器,默认加载CallFragment,在呼叫接通后根据音视频类型加载InTheAudioCallFragment或者InTheVideoCallFragment |
CallFragment | 呼叫页UI,包括主叫与被叫 |
InTheAudioCallFragment | 音频通话页UI,包括主叫与被叫 |
InTheVideoCallFragment | 视频通话页UI,包括主叫与被叫 |
音视频通话的时序图如下图所示。
用户A呼叫组件AG2服务器信令服务器呼叫组件B业务服务器用户B呼叫计费alt[一方挂断电话][出现欠费]请求校验是否可以发起呼叫返回校验结果,分配ChannelName、uid等信息(可选)A发起呼叫邀请呼叫组件发起呼叫邀请A邀请B的信令A邀请BB接听B接听B加入RTCB接听的信令A加入RTCB接听发送用户A 加入房间的抄送发送用户B 加入房间的抄送开始计费通话中客户端向业务服务器发送计费心跳(可选)发送用户离开房间的抄送停止计费发送通话话单出现欠费,销毁房间通话结束通话结束通话结束通话结束用户A呼叫组件AG2服务器信令服务器呼叫组件B业务服务器用户B
步骤1 集成呼叫组件 SDK
1 对 1 娱乐社交场景方案的呼叫能力基于云信呼叫组件来进行实现。
-
在工程根部目录的
build.gradle
文件中添加如下代码。allprojects { repositories { //... mavenCentral() //... } }
-
在主工程
build.gradle
文件中添加如下代码,引入呼叫组件。// 若出现 More than one file was found with OS independent path 'lib/arm64-v8a/libc++_shared.so'. // 可以在主 module 的 build.gradle 文件中 android 闭包内追加如下 packageOptions 配置 android{ //...... packagingOptions { pickFirst 'lib/arm64-v8a/libc++_shared.so' pickFirst 'lib/armeabi-v7a/libc++_shared.so' } } dependencies { // 集成呼叫组件 https://doc.yunxin.163.com/nertccallkit/docs/DMzOTI3NTA?platform=android implementation 'com.netease.yunxin.kit.call:call-ui:x.x.x' }