Android设备实现语音视频通话

article/2025/10/13 6:40:12

一、背景

有智慧社区相关的项目,需要门禁开发门禁机APP以及用户端APP,要求实现门禁设备呼叫业主APP,业主接通后可以通话、可以开门。这里主要要做的就是语音和视频通话功能,以及远程开门。至于业务逻辑那就是正常的需求处理了。

二、方案调研

1、sip方案

有做过调研,也找了对应的设备进行了测试验证,流程跑通,但是效果不是太好,杂音大回音大,不清楚是设备处理问题还是软件实现优化问题。同时由于商务原因,后来放弃。不过主要的流程就是:

使用设备方的sip服务器,根据对方提供的web接口,我们在需要的时候创建对应的sip账号

设备方提供设备和APP端SDK

我们使用sdk实现呼叫、接听、开门、视频、语音通话等功能

2、基于P2P的音视频通话方案

我们找了一家专门提供语音视频通话服务的厂商,使用对于提供的sdk,做了开发测试验证,总体效果还不错,毕竟专门做软件的,同时对方还能提供各个版本的开发sdk(windows版本、ubuntu版本、linux(支持多种芯片)),这对于们后期如果对接他们类型的设备提供了较好的扩展性。因此最后采取此方案。此方案可以用于视频直播,分为视频播放端和视频采集端,我们再此基础上定义了自己的协议规则,实现了呼叫、开门等功能。

三、开发流程

1、对方给我们单独部署一套音视频服务

2、我们后台根据web端接口文档,在需要的时候创建相应的呼叫号,同时跟用户关联

3、门禁设备集成采集端sdk,同时实现呼叫、接听、开门操作等业务

4、用户APP集成播放端sdk、同时实现呼叫、接通、拒接、远程开门等业务

5、设备和APP联调测试

四、APP端开发流程

1、sdk二次封装

因为我们要做一些自己的修改,同时后续可能回提供给第三方,所以按功能封装成sdk是最合理的

主要根据业务需要封装了必要的接口方法:

呼叫、开门、接听、以及一些设置、以及设备状态信息监听

2、app端集成自己开发的sdk

 先引入自己开发的sdk,然后实现相关逻辑页面

呼叫页面、来电页面、接通页面、开门处理等

3、测试验证

设备和APP


http://chatgpt.dhexx.cn/article/Nes8fSsD.shtml

相关文章

基于 Web SDK 实现视频通话场景 | 声网 SDK 教程

声网视频 SDK 被广泛应用于多种实时互动场景中,例如视频会议、视频通话、音视频社交、在线教育等。为了让刚刚接触声网 SDK 的开发者,可以更顺畅地实现基础的视频通话功能,我们基于声网 Web SDK 4.x 版本梳理了本篇教程。 在本文末&#xff0…

如何基于 Agora Android SDK 在应用中实现视频通话?

在很多产品,实时视频通话已经不是新鲜的功能了,例如视频会议、社交应用、在线教育,甚至也可能出现在一些元宇宙的场景中。 本文将教你如何通过声网Agora 视频 SDK 在 Android 端实现一个视频通话应用。声网 SDK 每个月会提供 10000 分钟的免…

Android uni-app实现音视频通话

前言 上一篇讲解了怎么实现Android uni-app封装原生插件,这篇讲解一下,把anyRTC的RTC(音视频通讯)封装uni-app 实现音视频通话。 不了解anyRTC的小伙伴,可以点击下面链接: 开发者官网 1.效果图 先上图&a…

使用 Agora SDK 开发 React Native 视频通话 App

在 React Native 的应用中,从头开始添加视频通话功能是很复杂的。要保证低延迟、负载平衡,还要注意管理用户事件状态,非常繁琐。除此之外,还必须保证跨平台的兼容性。 当然有个简单的方法可以做到这一点。在本次的教程中&#xf…

MySQL联合索引底层数据结构是怎样的

目录 1. 联合索引数据结构图 2.联合索引是如何进行排序的 3. 联合索引查询特点 1. 联合索引数据结构图 如下图所示联合索引的数据结构, 通过name,age,position三个字典进行一个联合索引,构建B树索引结构。 2.联合索引是如何进行排序的 B树…

MySQL联合索引在B+树如何存储以及寻址

文章目录 引入Innodb B树联合索引存储以及寻址总结 引入 最近找工作, 去一家三方支付公司面试,前面得过程还挺好,所有的提都回答对了(心里暗自窃喜应该能拿到高工资offer,迎娶白富美,然后走向人生巅峰&…

MySQL联合索引生效规则

最近项目中一张表数量测试达到千万级别,考虑加索引,对于单列索引及联合索引(复合索引)简单学习了下,做一下笔记。 联合索引生效前提:因为联合索引有顺序讲究,联合索引的第一个字段是引导列&…

mysql联合索引的数据结构

一、本文主要讲解的内容有: 联合索引在B树上的存储结构联合索引的查找方式为什么会有最左前缀匹配原则 在分享这篇文章之前,我在网上查了关于MySQL联合索引在B树上的存储结构这个问题,翻阅了很多博客和技术文章,其中有几篇讲述的…

mysql联合索引有效和失效的情况分析

关于mysql的索引,是mysql优化一个非常重要的方面。那么关于索引是否有效就是非常关键了。很多人设计了索引,但是发现依旧很慢。那么这个时候就判断sql的索引执行情况非常重要了。网上有大量的博主也写过不少类似的文章,但是关于联合索引的具体…

MySQL联合索引(abc)命中规则

1.建表 mysql创建一张表,表名:‘test_models’ id列为 主键,int类型 ,自增a,b,c,d,e 全部是int(11)为(a,b,c)添加一个联合索引 index_abc 执行语句: CREATE TABLE te…

mysql联合索引

mysql联合索引的使用 命名规则:表名_字段名 1、需要加索引的字段,要在where条件中 2、数据量少的字段不需要加索引 3、如果where条件中是OR关系,加索引不起作用 4、符合最左原则 以下是我的建表语句 CREATE TABLE test ( id int(11) uns…

mysql 联合索引结构与索引匹配原则

联合索引结构与索引匹配原则 最左前缀匹配原则:在MySQL建立联合索引时会遵守最左前缀匹配原则,即最左优先,在检索数据时从联合索引的最左边开始匹配。 要想理解联合索引的最左匹配原则,先来理解下索引的底层原理。索引的底层是一…

详解MySQL联合索引

引言 本文预计分为两个部分:(1)联合索引部分的基础知识 在这个部分,我们温习一下联合索引的基础(2)联合索引部分的实战题 在这个部分,列举几个我认为算是实战中的代表题,挑出来说说。 正文 基础 讲联合索引,一定要扯最左匹配!…

mysql联合索引的使用

这篇笔记主要记录联合索引的使用 设置了shopId、userId、relationId三个字段,作为联合索引,这三个字段,都是long类型的,也就是bigint 分别验证以下几个场景: 场景一:explain select * from testIndex wher…

MySQL联合索引的原理

面试中被问到了联合索引,突然就涉及到了知识盲区,对不起,我只知道B树,B树,哈希索引,聚簇索引,非聚簇索引,联合索引的原理?。。 对不起涉及到了我的知识盲区了。 这里对联…

Mysql 联合索引

联合索引底层数据结构 MySQL可以使用多个字段同时建立一个索引,叫做联合索引。上文中讲到索引的底层结构就是一个二叉树,联合索引也是一样,它的非叶子节点中存的就不只是一个列,是索引的所有列,并且它的排序就是根据索引列的先后顺…

mysql联合索引详解

比较简单的是单列索引(btree)。遇到多条件查询时,不可避免会使用到多列索引。联合索引又叫复合索引。 btree结构如下: 每一个磁盘块在mysql中是一个页,页大小是固定的,mysql innodb的默认的页大小是16k&a…

MySQL索引详解

本文主要介绍MySQL索引底层原理及优化,理解SQL是如何执行,MySQL如何选择合适的索引以及时间都消耗在哪些地方,再加上一些优化的知识,可以帮助大家更好的理解MySQL,理解常见优化技巧背后的原理。希望本文中的原理、示例…

MySQL索引之联合索引

目录 1. 联合索引1.1. 联合索引的存储结构1.2. 联合索引的查询流程1.3. 最左前缀匹配原则1.3.1. 最左前缀匹配原则说明 2. 索引下推2.1. 无索引下推的执行流程2.2. 有索引下推的执行流程 1. 联合索引 在平时开发中,我们最常见的是聚集索引,但在我们需要…

jedis和redisTemplate

使用原生jedis和spring的redisTemplate调用连接池,发现差别巨大: redis配置: redis:database: 0host: 127.0.0.1port: 6379password: 123456timeout: 5000lettuce:shutdown-timeout: 200pool:max-active: 500max-idle: 100min-idle: 50max-w…