在上一篇文章中我们介绍了在iOS环境下如何利用即构游戏语音SDK快速实现实时语音对话功能。今天我们继续讲在Android环境下用SDK在游戏过程中,实现同一房间内的成员,进行实时语音对话的功能。

下载 SDK

请从 ZegoAudioRoom iOS 下载 SDK。

如果要实现播放本地音频、视频文件的功能(可用于播放背景音乐,播放MV,播放直播音效等场景),请下载包含 MediaPlayer 功能的 SDK,请下载 ZegoAudioRoom_MediaPlayer iOS。

Android 游戏语音SDK集成指引。

功能实现流程

以 2 人间的游戏语音为例,主要流程如下:

请注意:

上面流程中以 2 名房间成员间的游戏语音为例,实际上 Zego SDK 支持多人游戏语音。建议开发者按需设计。

为了便于开发者更快理解 AudioLive 中的逻辑,下述每节会将功能核心源码片段挑出来并加以讲解。开发者亦可直接阅读 AudioLive
源码,两者是一致的。

1、登录房间

用户间进行实时语音对话前,需要先登录到同一个房间。

AudioLive 中登录相关源码片段演实时语音示如下,仅供参考:

SessionActivity.java// 登录房间,登录成功后会自动拉流
private void login(String roomId) {tvEventTips.setText(getString(R.string.zg_tip_begin_login_room, roomId));zegoAudioRoom.setUserStateUpdate(true);boolean success = zegoAudioRoom.loginRoom(roomId, new ZegoLoginAudioRoomCallback() {@Overridepublic void onLoginCompletion(int state) {MainActivity.ZGLog.d("onLoginCompletion: 0x%1$x", state);if (state == 0) {hasLogin = true;btnAux.setEnabled(true);btnMute.setEnabled(true);btnRecorder.setEnabled(true);btnMicrophone.setEnabled(true);if (PrefUtils.isManualPublish()) {btnCommunicate.setEnabled(true);}tvEventTips.setText(R.string.zg_tip_login_success);} else {Toast.makeText(SessionActivity.this, String.format("Login Error: 0x%1$x", state), Toast.LENGTH_LONG).show();tvEventTips.setText(getString(R.string.zg_tip_login_failed_state, state));}}});MainActivity.ZGLog.d("login: %s", success);if (!success) {tvEventTips.setText(R.string.zg_tip_login_failed);}
}

2、发布直播

房间内成员均可发布直播,但发布直播有两种方式:

自动发布直播和手动发布直播,请注意,如果用户选择自动发布直播,登录成功后,SDK 会自动开始推流,用户无需手动触发。

AudioLive 中手动发布直播相关源码片段演示如下,仅供参考:

SessionActivity.java// 用户主动点击发布直播按钮
private void handleCommunicate() {if (!PrefUtils.isManualPublish()) return;if (hasPublish) {zegoAudioRoom.stopPublish();btnCommunicate.setText(R.string.zg_start_communicate);ZegoAudioStream myStream = new ZegoAudioStream(publishStreamId, PrefUtils.getUserId(), PrefUtils.getUserName());streamAdapter.removeItem(myStream);publishStreamId = null;hasPublish = false;tvEventTips.setText(R.string.zg_tip_stop_publish);} else {btnCommunicate.setEnabled(false);zegoAudioRoom.startPublish();}
}

3、播放直播

房间内成员均可播放直播,登录房间成功后,SDK 会自动拉流播放直播。用户无需手动触发拉流。

4、结束音频直播

音频通话结束后的操作主要是登出房间、清理视图或数据等。开发者可按需调用。

AudioLive 中结束音频直播相关源码片段演示如下,仅供参考:

SessionActivity.java// 用户退出 SessionActivity 界面时
@Override
public void onBackPressed() {if (hasLogin) {logout();}removeCallbacks();super.onBackPressed();
}// 退出房间
private void logout() {boolean success = zegoAudioRoom.logoutRoom();streamAdapter.clear();hasLogin = false;hasPublish = false;btnAux.setEnabled(false);btnMute.setEnabled(false);btnRecorder.setEnabled(false);btnMicrophone.setEnabled(false);btnCommunicate.setText(R.string.zg_start_communicate);if (PrefUtils.isManualPublish()) {btnCommunicate.setEnabled(false);}MainActivity.ZGLog.d("logout: %s", success);
}// 移除所有回调
private void removeCallbacks() {zegoAudioRoom.setAudioRoomDelegate(null);zegoAudioRoom.setAudioPublisherDelegate(null);zegoAudioRoom.setAudioPlayerDelegate(null);zegoAudioRoom.setAudioLiveEventDelegate(null);zegoAudioRoom.setAudioRecordDelegate(null);zegoAudioRoom.setAudioDeviceEventDelegate(null);zegoAudioRoom.setAudioPrepareDelegate(null);zegoAudioRoom.setAudioAVEngineDelegate(null);
}

Android游戏语音SDK及功能实现流程相关推荐

  1. iOS语音直播SDK及功能实现流程

    语音直播场景的典型使用案例是同一房间内的成员,进行语音直播,有需要时也可进行实时语音通话.Zego 提供了对语音直播场景的支持,此文讲述如何在iOS环境下利用即构SDK快速实现语音直播功能. 实现播放 ...

  2. c语言智能语音系统,一种Android智能语音控制方法及系统与流程

    本发明涉及语音输入技术领域,具体来说,涉及一种Android智能语音控制方法及系统. 背景技术: 现在人们的生活越来越依赖于智能手机:社交.打折信息.导航.购物等,为了解决某些特定场合不能手动操作手机 ...

  3. android 电视语音遥控器,基于遥控器的Android电视语音聊天系统及其方法与流程

    本发明涉及,尤其涉及一种基于遥控器的Android电视语音聊天系统及其方法. 背景技术: 随着科技越来越发展,电视机的功能也越来越强大,对于电视机,相对于传统电视机的单纯看电视功能,现有技术中,还支持 ...

  4. Android 科大讯飞语音SDK集成步骤

    前言 科大讯飞语音虽好,其严格的认证与校验确实精密,不过也大大提高了开发者的集成难度,并非危言耸听,我想大多数人都有经历过 11210(用户ID与离线资源不匹配) 21480( 离线引擎GUID不一致 ...

  5. 太空狼人杀火爆的背后 实时游戏语音有哪些技术难点

    太空版狼人杀游戏<Among Us>在海外的爆红也已延伸到了国内,在国内App Store免费游戏榜,<Among Us>曾一度进入榜单Top5,国产太空版狼人杀游戏<狼 ...

  6. android aar项目_一文了解Android游戏SDK开发

    去年从平安离职之后,加入了一家游戏公司,负责游戏SDK相关的业务开发和维护工作,经过半年来的摸索,对于游戏SDK的开发有了一定的理解,下面就对游戏SDK开发涉及到的知识点进行简单的梳理. SDK SD ...

  7. Android游戏的新功能

    转载自https://www.cps12345.com/android/10195/ 在今年3月的Google游戏开发者峰会上,我们分享了Google一直在致力于帮助游戏开发者的几种新工具和服务.它们 ...

  8. 游戏平台SDK设计和开发之旅——XSDK功能点梳理

    做游戏开发或者相关工作的同学,可能都知道,在游戏上线之前,需要将游戏分发到各大渠道平台,比如九游,百度,360,华为等等.其中和技术相关的事情,就是要在游戏中接入这些渠道平台的平台SDK,平台SDK中 ...

  9. php语音直播怎么做,语音直播功能实现流程

    功能实现流程 语音直播场景的使用场景主要有 2 种,在同一语音直播间内: 单主播语音直播,1 个主播发布语音,观众播放语音. 多主播语音直播,主播与观众连麦,进行实时语音互动. 以 2 人间的语音直播 ...

最新文章

  1. 不同类的方法 事务问题_深入理解 Spring 事务原理
  2. InnoDB Master Thread I/O Rate详解
  3. python字节码大全
  4. cad能整体比例缩小吗_CAD中两个缩放的不同及其各自的应用
  5. [题解]POJ 3683 Priest John's Busiest Day
  6. C++STL的queue容器
  7. 爬取网页的通用代码框架
  8. Asp.Net Boilerplate微服务实战(一)概述
  9. C++ 学习之旅(7)——指针pointer
  10. jQuery实现禁用和只读
  11. Leetcode744.Find Smallest Letter Greater Than Target寻找比目标字母大的最小字母
  12. 【TSP】基于matlab遗传算法求解31城市旅行商问题【含Matlab源码 1150期】
  13. 进度计划中的时间相关术语
  14. 【已解决】java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation
  15. GBase 8a集群运行报错BLK_TEMP: return NULL in alloc
  16. 学习微信小程序开发框架之了解JavaScript
  17. 网管必修课 中小企业安全路由器配置
  18. 服务器系统装显卡驱动,GPU服务器安装NVIDIA显卡驱动
  19. [战略]Fans未来战略--第3篇--以文会友
  20. 变电站3D仿真实训系统的特色及优势

热门文章

  1. 网页设计 实现读书信息反馈表 适合小白入门 安排
  2. javacv学习之实现matlab中imfill算法(孔洞填充)
  3. 新倩女幽魂维护服务器时间表,《倩女幽魂2》周常维护服务器合并候选名单
  4. C++ 实现 摄氏度 华氏度 温度转换(尽量少的代码)
  5. UICC, CSIM, RUIM, UIM, USIM, SIM
  6. Linux非逻辑卷、逻辑分区如何扩容
  7. 解决时间插件mobiscroll在使用过程中的一个小缺陷
  8. VirtualBox 上的windows XP启动时蓝屏
  9. 转载 : 张维迎:反思经济学(上、下全篇)
  10. 工业相机和镜头的参数理解、选型、打光方案总结(附参考案例)