使用声网的在线语音聊天室 SDK 能够实现开黑聊天室、娱乐房间、K 歌房、FM 超高音质房等各种语音聊天室所需要的音频功能。

场景描述

语音聊天室 是一种纯音频的使用场景。用户作为主播或者听众加入房间进行语音聊天,也可以在房间内任意切换自己的主播/听众身份。

这个示例程序展示了对音频设置有不同的需求的四种常见语音聊天室类型:

  • 开黑聊天室: 频道内用户需要频繁上下麦,用户不想花费过多流量
  • 娱乐房间: 频道内用户需要频繁上下麦,用户对流量使用不敏感,对音质有要求
  • K 歌房: 满足唱歌场景需求,还原KTV效果
  • FM 超高音质房间: 超高音质,声音还原度高,语音电台主播首选

体验 Demo

官方提供了 Demo 供你下载体验。你可直接下载安装 Android apk 安装包 或者 iOS Appstore 进行体验。

成功运行 Demo 后,在界面上创建房间,输入频道名称,并选择一种房间类型。使用另一台设备进入房间,即为观众观看。观众可以申请上麦从而实现和房主的实时互动。

下载 Android 开发代码,进行本地开发测试

  1. 像以往使用声网产品进行开发一样,你需要先在 Agora.io 中创建自己的项目,并获取到相应的 App ID。如果你还没注册,记得先注册一下 dashboard.agora.io/cn/signup/。
  1. 下载 Agora 语音通话/语音直播 SDK。

  2. 将有效的 AppID 填写进 "Android/app/src/main/res/values/strings_config.xml"

<?xml version="1.0" encoding="UTF-8"?><resources><!-- PLEASE KEEP THIS App ID IN SAFE PLACE --><!-- Get your own App ID at https://dashboard.agora.io/ --><!-- After you entered the App ID, remove <##> outside of Your App ID --><!-- For formal released project, please use Security Keys/Tokenhttps://docs.agora.io/en/Video/token?platform=All%20Platforms --><string name="private_app_id"><#YOUR APP ID#></string>
</resources>
复制代码

找到下面这一行,把你的 AppID 填写进去。

<string name="private_app_id"><#YOUR APP ID#></string>
复制代码
  1. 解压 SDK 压缩包,将其中的 libs 文件夹下的 *.jar 复制到本项目的 app/libs 下,其中的 libs 文件夹下的 arm64-v8a/x86/armeabi-v7a 复制到本项目的 app/src/main/jniLibs 下。

  2. 使用 Android Studio 打开该项目,连接 Android 测试设备,编译并运行。

运行环境:

  • Android Studio 3.1 +
  • Android SDK API Level >= 16
  • Android 4.1 或以上支持语音和视频功能的真机设备

功能列表

这个示例程序演示了如何使用 声网 Agora 的音频SDK,实现不同类型语音聊天室的音频聊天功能。

  • 加入房间:选择一个房间类型,使用主播或听众的身份加入房间,和房间内的其他用户进行语音交流;
  • 主播/听众切换:在房间内可以随时使用“上麦”按钮来切换自己的主播/听众身份;
  • 听筒/外放切换:可以使用“外放”按钮切换听筒或外放;
  • 停止发送音频:主播可以使用“静音自己”按钮停止发送音频;
  • 停止接收音频:可以使用“不收音频”按钮停止接收房间内其他人的音频;
  • 音乐伴奏:主播可以使用“伴奏”按钮播放伴奏音乐并发送给房间内其他人;
  • 变声效果:主播可以使用“变声”按钮选择自己的变声效果。

源码解读

在体验了 SDK 的基本功能后,让我们看看源码,这些功能是如何实现的。

在文件 Chatroom/Android/app/src/test/java/io/agora/chatroom/ExampleUnitTest.java 中,我们可以看到,这是一个简单的单元测试:

package io.agora.chatroom;import org.junit.Test;import static org.junit.Assert.*;/*** Example local unit test, which will execute on the development machine (host).** @see <a href="http://d.android.com/tools/testing">Testing documentation</a>*/
public class ExampleUnitTest {@Testpublic void addition_isCorrect() throws Exception {assertEquals(4, 2 + 2);}
}
复制代码

Mainfest 中是进行基本设置,Chatroom/Android/app/src/main/AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="io.agora.chatroom"><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.RECORD_AUDIO" /><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" /><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/AppTheme"><activity android:name=".MainActivity"android:screenOrientation="portrait"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><activity android:name=".RoomActivity"android:screenOrientation="portrait"/></application></manifest>
复制代码

此外,在 Chatroom/Android/app/src/androidTest/java/io/agora/chatroom/ExampleInstrumentedTest.java 这里我们还可以看到 Instrumente 测试用例,这个 SDK 的测试用例可以说是比较完善了。

package io.agora.chatroom;import android.content.Context;
import android.support.test.InstrumentationRegistry;
import android.support.test.runner.AndroidJUnit4;import org.junit.Test;
import org.junit.runner.RunWith;import static org.junit.Assert.*;/*** Instrumentation test, which will execute on an Android device.** @see <a href="http://d.android.com/tools/testing">Testing documentation</a>*/
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {@Testpublic void useAppContext() throws Exception {// Context of the app under test.Context appContext = InstrumentationRegistry.getTargetContext();assertEquals("io.agora.chatroom", appContext.getPackageName());}
}
复制代码

当然,真正核心的代码是在这里 Chatroom/Android/app/src/main/java/io/agora/。

首先在 Chatroom/Android/app/src/main/java/io/agora/utils/Constant.java 这里进行了一些定义。

package io.agora.utils;/*** Created by yt on 2018/8/15/015.*/public class Constant {// 开黑聊天室public static final int ChatRoomGamingStandard = 0x01;// 娱乐聊天室public static final int ChatRoomEntertainmentStandard = 0x02;// K 歌房public static final int ChatRoomEntertainmentHighQuality = 0x03;// FM 超高音质public static final int ChatRoomGamingHighQuality = 0x04;// 开黑聊天室public static final String ChatRoomGamingStandardName = "ChatRoomGamingStandard";// 娱乐聊天室public static final String ChatRoomEntertainmentStandardName = "ChatRoomEntertainmentStandard";// K 歌房public static final String ChatRoomEntertainmentHighQualityName = "ChatRoomEntertainmentHighQuality";// FM 超高音质public static final String ChatRoomGamingHighQualityName = "ChatRoomGamingHighQuality";public static final String ACTION_KEY_CROLE = "C_Role";public static final String ACTION_KEY_ROOM_MODE = "ecHANELMODE";public static final String ACTION_KEY_ROOM_NAME = "ecHANEL";public static final String ACTION_KEY_TITLE_NAME = "eTITLE";public static String[] SOUNDARRAY = new String[] {"大叔","正太","猪八戒","空灵","浩克","萝莉","电台KTV","演唱会","录音棚", "流行", "R&B", "嘻哈", "摇滚"};
}
复制代码

在这里 Chatroom/Android/app/src/main/java/io/agora/adapter/UsesAdapter.java 进行了用户列表的适配。

在这里 Chatroom/Android/app/src/main/java/io/agora/chatroom/RoomActivity.java 可以看到,聊天室内的这些互动功能是如何实现的,很值得学习。代码有些长,我就不贴出来了。

在这里 Chatroom/Android/app/src/main/java/io/agora/chatroom/User.java 实现了聊天室的用户判断。

感兴趣的,建议你到 官方库 github.com/AgoraIO-Use… 看详细代码,并下载体验一下。


Agora SDK 使用体验征文大赛 | 掘金技术征文,征文活动正在进行中

转载于:https://juejin.im/post/5cd14711518825408612c7e4

Agora 在线语音聊天室开发上手和源码解读 | 掘金技术征文相关推荐

  1. 漫步VR——Unity语音聊天室开发小结

    一.背景介绍 VR是什么 虚拟现实Virtual Reality的英语缩写.VR 主要有手机盒子.头盔和一体机三种. 虚拟现实技术是一种可以创建和体验虚拟世界的计算机仿真系统它利用计算机生成一种模拟环 ...

  2. 【腾讯TMQ】漫步VR——Unity语音聊天室开发小结

    作者:刘勇 一.背景介绍 VR是什么 虚拟现实Virtual Reality的英语缩写.VR 主要有手机盒子.头盔和一体机三种. 虚拟现实技术是一种可以创建和体验虚拟世界的计算机仿真系统它利用计算机生 ...

  3. 站在Z时代社交风口 融云打造语音聊天室新模式

    谁也没想到,2019年第一个风口竟然来的如此高调. 2019年1月,排名App Store榜首既不是微信.支付宝这些传统大牌,也不是抖音.拼多多这样的互联网新贵,而是一款主打语音社交的App成功登顶. ...

  4. 制作一款多人语音聊天室的成本是多少?

    首先不知道你想要制作的是哪一种类型的语音聊天室,是类似9158聊天室还是51vv那种语音聊天室,因为每一种不同风格的语音聊天室开发的成本都是不一样的. 打个比方,你想实现yy语音聊天室一样的功能,保守 ...

  5. 开发最佳实践|集成声网 iOS SDK,实现语音聊天室

    大家好,我是声网 RTE 开发者社区作者 @小曾同学.本次主要分享集成声网SDK实现语音聊天室. 01 前言 在日常生活中经常会看到一些聊天场景,比如在线KTV.连麦开黑.多人相亲.娱乐聊天室等应用场 ...

  6. 语音聊天app开发——语音聊天室系统如何开发

    网络直播行业近些年算得上是多元化发展,各个互联网平台陆续入驻,开发自身的短视频直播平台,像百度,腾讯,阿里等,直播也多种渠道发展,1对多视频直播,1对1直播,视频语音多人连麦直播,相比视频直播而言,语 ...

  7. ios开发 多人语音聊天_iOS-实现多人语音聊天室-场景实践-音视频通话2.0-网易云信开发文档...

    云信多人语音聊天室(iOS) 这个开源示例项目演示了如何快速集成NERTC SDK,快速实现多人语音聊天室功能. 功能介绍 该示例项目中包含了以下功能: 创建语音聊天室: 使用文字或语音进行多对多互动 ...

  8. 语音聊天室源码开发点赞功能,用 MySQL 还是 Redis ?

    为了提升用户在语音聊天室源码中的互动性,一般在开发动态广场功能时会支持用户间对动态进行点赞,所以点赞功能可以说是语音聊天室源码开发的基础性功能,今天我们就来聊聊点赞.评论.收藏等这些场景的db数据库设 ...

  9. 【flex chat】 p2p视频语音聊天室 欢迎你的测试

    [flex chat] p2p视频语音聊天室 欢迎你的测试, 花了我2个星期的时间,相对来说比较完善了,用的是Adobe提供的P2P服务器.后期有时间可以继续开发,以现有的功能可以实现视频会议.视频客 ...

最新文章

  1. 微信研究员解析深度学习在NLP中的发展和应用
  2. 《C++ Primer》13.1.3节练习
  3. 微博如何发订阅消息_微信订阅号或将大变天,微博8年前就这么干了...
  4. 数据结构c java_Java - 数据结构
  5. 菜鸟进阶Linux高手之路——第四天(下)
  6. 【opencv学习笔记】SetImageROI函数设置ROI区域的作用及用法
  7. 量化投资中的「模型」与「人」
  8. oracle阿拉伯数字转换成汉字,一个阿拉伯数字转中文数字的函数
  9. 2020年408真题_2020年港澳台联考真题——化学!
  10. 《自己动手写CPU》学习记录(1)——第1章
  11. 海龟交易法:如何防止模型死亡
  12. 微信里iphone后退不刷新问题解决方案,真实有效
  13. PS制作3D立体字、透明气泡
  14. 京东自动评价助手/京东评价
  15. 鸿蒙定时重启软件,谁有自动定时关机开机的软件!求助!
  16. 甘肃地形图之陇右地形分析、DEM数据下载
  17. loaded the “XXXView“ nib but the view outlet was not set 解决方案
  18. 只因,在人群中多看了你一眼 (小说)
  19. snap7-c++/MFC开发笔记
  20. 苏宁智慧零售2018: 大象轻舞,一动千钧 | 一点财经

热门文章

  1. 图像质量评价:感知建模——Image Quality Assessment: Unifying Structure and Texture Similarit
  2. JVM参数调优-设置堆、新生代、老年代、持久代大小
  3. 维修电工电气控制及仪表照明实训装置
  4. springboot+基层慢性病信息管理系统 毕业设计-附源码221550
  5. 16-思科防火墙:MPF运用层策略
  6. 电大计算机文化基础形考所有答案,电大计算机文化基础形考一答案(5页)-原创力文档...
  7. 使用pdf.js在web页面展示pdf文件
  8. 轮廓仪 wyko matlab,VEECO光学轮廓仪
  9. js根据文件后缀判断文件类型
  10. 记录自己的包括但不限于代码的一些心路历程-01