| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> Android技术分享| 一对一音视频呼叫邀请开发流程(一) -> 正文阅读 |
|
[移动开发]Android技术分享| 一对一音视频呼叫邀请开发流程(一) |
此文档基于 Android RTM、RTC SDK,其他平台API 基本一致,可供参考。 ? RTM:用于搭建呼叫的一整套流程、信令交互 ? RTC:用于呼叫流程通了之后的音视频交互 由于呼叫和音视频是完全分开的两个 sdk,所以在开发的时候需要注意的情况很多。 点对点呼叫点对点呼叫就是2个人的通话,基本的通话场景中包含发起呼叫、拒绝呼叫、同意呼叫、视频呼叫转语音接听、呼叫正忙等。 下面我将一一介绍这几个功能的实现以及需要注意的地方。 以下功能默认你已基本阅读过 RTM RTC 文档且登录成功了 RTM SDK,RTC SDK 也已经准备好。 主叫发起呼叫
? 上述方法用于创建一个呼叫对象,? 其中参数 userId 为对方的登录 RTM sdk 的 userId
? 发起呼叫的时候,通常我们都需要告诉对方本次是视频呼叫还是音频呼叫,是否多人呼叫,或者其他跟业务相关的信息。这时候就可以在上面创建的 localInvitation 对象中添加自定义信息。
有了以上两步,就可以发送呼叫了。主叫发送呼叫之后会收到相关的回调如下,建议将注释copy到代码中去,方便处理业务。
?熟悉以上回调作用在开发中相当重要,其中同意和拒绝回调中的第二个 response 参数,在通话中我们也可以用到。稍后在转语音接听/通话正忙章节介绍。 取消呼叫
被叫同意呼叫在对方发起呼叫后,被叫会收到以下相关回调。
流程图(同意呼叫后) 请注意被叫回调中的 RemoteInvitation 对象,这个对象其实就是包含了主叫的一些信息,比如
通常我们会在收到呼叫的回调中,解析 Content 里的 json,就可以知道本次是音频还是视频呼叫,本次呼叫将要进入的 RTC 频道。在这里,你可以选择拒绝或者同意对方的呼叫,同意拒绝后主叫被叫将会触发哪些回调,请再阅读上面的回调注释。 另外,RemoteInvitation 还有一个特别实用的方法
这个方法可以用来做什么?请往下看。 视频呼叫转语音接听视频呼叫转语音接听在视频通话中是很常见的,微信也有这个功能。实现这个功能很简单的。只需要在同意的时候,给RemoteInvitation对方设置 response ,如下所示
当我们给 RemoteInvitation 对象设置 response后,并且同意后,主叫会收到
其中第二个参数就是被叫设置的 response,然后我们可以在这解析,判断对方回的 mediaType,是否和本地发起时候的一致,不一致就是对方转语音接听了。 拒绝呼叫/呼叫正忙流程图(拒绝呼叫)
当我们给 RemoteInvitation 对象设置 response后,并且拒绝后,主叫会收到
其中第二个参数就是被叫设置的 response,然后我们可以在这解析,判断对方拒绝的原因并给予提示。 当然也可以不设置,不设置那就是默认正常拒绝。这些都属于业务逻辑,可以自己更改。 以上就是 RTM 点对点呼叫部分的流程,接下来就是挂断和进入 RTC 频道了。 加入RTC 频道我们通常会在被叫同意后,双方开始加入 RTC 频道,RTC的频道ID 我们已经在主叫创建 LocalInvitation 对象时定义好了,并且通过自定义信息带给了被叫。所以我们只需要在以下回调中,分别做加入RTC 频道的逻辑即可
关于加入 RTC 等音视频处理,本文不做过多介绍。 挂断需要注意的是,在被叫同意/拒绝后,RTM 的呼叫流程其实就已经结束了。我们在通话中挂断需要通过 RTM 信令通知对方。比如向主叫发送一条个人信息
当然还有一些异常的情况,比如双方有个人通话中断线了,直接杀App进程了,这种异常情况,可以考虑订阅对方在线状态处理,或者自己定义一套异常的处理措施。 总结
以上就是基于 RTM RTC SDK实现点对点视频通话的基本流程,基于以上流程,我们也有相应的参考DEMO, 下一篇将介绍如何实现多人呼叫,中途邀请其他人参与呼叫等例子。 |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 4:47:18- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |