自从2016年,鼓吹“互联网寒冬”的论调甚嚣尘上,2017年亦有愈演愈烈之势。但连麦直播、在线抓娃娃、直播问答、远程狼人杀等类型的项目却异军突起,成了投资人的风口,创业者的蓝海和用户的必装App,而这些方向的项目都有一个共同的特点——都依赖视频通话和全互动直播技术。

声网Agora.io的SDK让App和网站都可以实现高质量的音频通话、视频通话、全互动直播。我试着通过该SDK实现一个多人视频通话应用。本文先分享集成的部分。

环境

声网Agora.io SDK的兼容性良好,对硬件设备和软件系统的要求不高,开发环境和测试环境满足以下条件即可:

Android SDK API Level >= 16

Android Studio 2.0 或以上版本

支持语音和视频功能的真机

App 要求 Android 4.1 或以上设备

以下是我试用声网Agora.io SDK的开发环境和测试环境:

开发环境

Windows 10 家庭中文版

Java Version SE 8

Android Studio 3.2 Canary 4

测试环境

Samsung Nexus (Android 4.4.2 API 19)

Mi Note 3 (Android 7.1.1 API 25)

集成

步骤一:首先点此下载完整的SDK和官方demo

步骤二:既然我们要把声网Agora.io集成到自己的项目里,所以不必运行sample,我们自己新建一个HelloAgora项目,注意一定要支持C++哦。

步骤三:把libs文件夹里的arm64-v8a、、armeabi-v7a以及x86文件夹复制粘贴到app module的libs里。如果有NDK开发的必要,则把libs->include文件夹里的两个.h头文件复制粘贴到合适位置。

步骤四:首先在app module的build.gradle文件的android代码块中添加如下代码:

sourceSets {
    main {
        jniLibs.srcDirs = ['../../../libs']
    }
}

然后在app module的build.gradle文件的android->defaultConfig代码块中添加如下代码:

ndk {
    abiFilters "armeabi-v7a", "x86"
}

接下来在app module的build.gradle文件的dependencies代码块中添加如下代码:

compile 'io.agora.rtc:full-sdk:2.0.0'

如果用复制粘贴jar的方式,那么此处添加如下代码:

compile fileTree(dir: '../../../libs', include: ['*.jar'])

如果有自定义NDK的必要,可以继续在app module的build.gradle文件的android代码块中添加如下代码:

externalNativeBuild {
    ndkBuild {
        path 'src/main/cpp/Android.mk'
    }
}

然后在app module的build.gradle文件的android->defaultConfig代码块中添加如下代码:

externalNativeBuild {
    ndkBuild {
        arguments "NDK_APPLICATION_MK:=src/main/cpp/Application.mk"
    }
}

最后sync一下,声网Agora.io的SDK就集成到项目中来了。

权限

SDK集成完毕后,为了保证SDK能正常运行,我们需要在AndroidManisfest.xml 文件中声明以下权限:

<!--允许程序连接网络-->
<uses-permission android:name="android.permission.INTERNET" />
<!--允许程序录制音频-->
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<!--允许程序使用照相设备-->
<uses-permission android:name="android.permission.CAMERA" />
<!--允许程序修改全局音频设置-->
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<!--允许程序获取网络状态-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!--允许对存储空间进行读写-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--允许程序连接到已配对的蓝牙设备-->
<uses-permission android:name="android.permission.BLUETOOTH" />

这些权限都是Android开发过程中的常见权限,有经验的程序员都会感觉眼熟,WRITE_EXTERNAL_STORAGE等敏感权限适配Android 6.0以后版本的问题并非本文关注重点,在此不做赘述。

混淆代码

集成SDK并声明了权限后,就该考虑混淆的问题了,我们需要在project的proguard-rules.pro文件里添加以下代码:

-keep class io.agora.**{*;}

经过以上过程后,我们已经完成了声网Agora.io SDK的快速集成,迈出了走向连麦直播、在线抓娃娃、直播问答、远程狼人杀等风口的第一步。在接下来的文章里,我将继续分享APP ID鉴权、Token鉴权、一对一视频聊天、创建群聊room、分屏、窗口切换和前后摄像头切换等内容。

转载于:https://blog.51cto.com/dongfeng9ge/2095621

Android多人视频聊天应用的开发(一)快速集成相关推荐

  1. Android多人视频聊天应用的开发(三)多人聊天

    在上一篇<Android多人视频聊天应用的开发(二)一对一聊天>中我们学习了如何使用声网Agora SDK进行一对一的聊天,本篇主要讨论如何使用Agora SDK进行多人聊天.主要需要实现 ...

  2. Android多人视频聊天应用的开发(二)一对一聊天

    在上一篇<Android多人视频聊天应用的开发(一)快速集成>中我们讨论了如何配置Agora Android SDK,本文我们将探索使用Agora进行一对一视频聊天的奥秘. 鉴权 APP ...

  3. (Agora声网)多人视频聊天应用的开发(三)多人聊天

    转载于:Android多人视频聊天应用的开发(三)多人聊天-玖哥的书房-51CTO博客 http://blog.51cto.com/dongfeng9ge/2104587 本系列文章结合声网官方在Gi ...

  4. (Agora声网)多人视频聊天应用的开发(二)一对一聊天

    转载于:Android多人视频聊天应用的开发(二)一对一聊天-玖哥的书房-51CTO博客 http://blog.51cto.com/dongfeng9ge/2095626 本系列文章结合声网官方在G ...

  5. (Agora声网)多人视频聊天应用的开发(一)快速集成

    转载于:Android多人视频聊天应用的开发(一)快速集成-玖哥的书房-51CTO博客 http://blog.51cto.com/dongfeng9ge/2095621 本系列文章结合声网官方在Gi ...

  6. 【游戏开发实战】Unity从零开发多人视频聊天功能,无聊了就和自己视频聊天(附源码 | Mirror | 多人视频 | 详细教程)

    文章目录 一.前言 二.思考问题与解决方案 1.思考问题 2.解决方案 2.1.Unity中如何开启摄像头并对图像进行采样 2.2.图像如何中转给其他客户端 2.3.如何实现清晰度切换 2.4.客户端 ...

  7. Android 集成 Agora SDK 快速体验 RTC 版多人视频聊天|掘金技术征文

    RTC (Real-Time Communication) 作为实时通讯领域的"新贵",在互动直播.远程控制.多人视频会议.屏幕共享等领域广受好评,如果你还不了解 RTC ,Tak ...

  8. FluorineFx + Flex视频聊天室案例开发----客户端

    上一篇<FluorineFx + Flex视频聊天室案例开发----服务器端>详细的介绍了如何利用FluorineFx开发一个及时通信的视频聊天室服务器处理程序,并通过Web网站来宿主这个 ...

  9. uniapp实现多人视频聊天

    本文展示如何使用 ZEGO uniapp实时音视频 SDK 构造多人视频聊天场景,即实现多对多实时音视频互动.用户可在房间内与其余用户进行实时视频通话,互相推拉流.该场景可用于多人实时视频聊天.视频会 ...

最新文章

  1. ubuntu16.04安装opencv3.4.1教程
  2. 牛客华为机试第5题python
  3. 数据结构——马踏棋盘题解(贪心算法)
  4. Debian下配置SSH服务器的方法
  5. 需求用例分析之二:级别设置
  6. 华为交换机linux版本号,Cisco和华为交换机常用配置命令总结
  7. mysql 时间类型 datetime,timestamp
  8. 模块化解耦框架RxFluxArchitecture3-订阅管理绑定生命周期
  9. habernet备份mysql_harbor 安装
  10. Linux创建shell脚本文件
  11. 快手短视频广告投放一年需要多少钱 快手信息流广告怎么样收费模式
  12. 关于Unable to read additional data from server sessionid 0x0问题的解决
  13. 计算机pe教程,win7 winpe安装过程图文教程
  14. contiki之list头文件
  15. 关于移动H3_2s光猫获得超级密码的步骤以及上传本地配置文件覆盖光猫的配置文件的方法
  16. 综合布线可视化运维管理平台与电子配线架的区别
  17. 【POJ 2187】如何修改Graham算法,才能使之顺利解决三点一条直线的问题。
  18. vc按钮按下后变灰(不能再按)
  19. 安装和使用jupyter notebook
  20. Spring MVC 4 + Spring Security 4 + Hibernate +JPA实战

热门文章

  1. 2018最新APP界面设计教程---手机ui高级实战案例 视频教程(价值320元)
  2. python中arange是什么意思_python中arange是什么意义【Python教程】,python,arange
  3. 人脸识别论文整理——深度人脸识别的大边缘余弦损失
  4. linux中的lnk格式,ink文件扩展名,ink文件怎么打开?
  5. 虚拟机防火墙以及端口操作
  6. 拼多多一晚被薅千万,倒赚276亿:一次蓄意营销的阴谋?
  7. 博图SCL_先进先出排序法
  8. mac 蓝牙搜索不到SONY WI-1000X 耳机型号
  9. WMS 原型详解 | 产品经理最讨厌的系统
  10. (附源码)计算机毕业设计SSM制造型企业仓储管理系统