专栏首页音视频学习TRTC Android端开发接入学习之实现语音通话(六)
原创

TRTC Android端开发接入学习之实现语音通话(六)

前言:

在上一篇《视频通话》中,我们实现了双方的视频通话,总所周知没有声音再好的戏也出不来,本期我们来学习如何使用TRTC完成语音通话的功能。

实现步骤

第一步:集成SDK

音视频通话组件 TRTCCalling 依赖 TRTC SDK 和 IM SDK,可以参考官方提供的集成指引,完成集成 TRTC集成文档IM集成文档

DEMO中主要文件

文件或文件夹

功能描述

TRTCAudioCallActivity.java

展示语音通话的主界面,通话的接听和拒绝就是在这个界面中完成的。

TRTCCallingEntranceActivity.java

用于展示选择联系人的界面,可以通过此界面搜索已注册用户,发起通话。

audiolayout

用于通话过程中用户画面的渲染和排布逻辑。

第二步:配置对应权限和混淆规则

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.RECORD_AUDIO" /> 
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> 
<uses-permission android:name="android.permission.BLUETOOTH" /> 
<uses-permission android:name="android.permission.CAMERA" /> 
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
<uses-feature android:name="android.hardware.camera"/> 
<uses-feature android:name="android.hardware.camera.autofocus" /> 

在 proguard-rules.pro 文件,将 SDK 相关类加入不混淆名单:

-keep class com.tencent.** { *; } 

第三步:在GenerateTestUserSig.java中配置SDKID和SECRETKEY

SDKAPPID:在音视频控制台中对应创建的应用的ID

SECRETKEY:音视频控制台对应的计算密钥,点击查看密钥获得

第四步:初始化SDK和登录

  1. 调用 TRTCCallingImpl.sharedInstance(context)获取组件实例。
  2. IM 登录
 V2TIMManager.getInstance().login(userId, userSig,callback) 

3. Calling组件登录

/** 
*SDKAppId:腾讯云音视频控制台新建的APP的应用ID 
*userid:当前用户的ID,字符串类型 a-z A-Z 0-9 -和_ 
*userSig:生成腾讯云安全保护签名(测试demo从简 本地生成,     
*如果是正式发布需要放到后台接口放置被盗取) 
**/ 
login(SDKAppID, userId, userSig, callback)  

第五步:实现通话功能

  • 1V1通话实现
  1. 发起方:调用 TRTCCalling 的 call() 方法发起通话的请求, 并传入用户 ID(userid)和通话类型(type),通话类型参数传入TYPE_AUDIO_CALL。
  2. 接收方:当接收方处于已登录状态时,会收到名为 onInvited() 的事件通知。
  3. 接收方:如果希望接听通话,接收方可以调用 accept()函数,或者调用 reject() 拒绝此次通话。
  4. 当双方的音视频通道建立完成后,通话的双方都会接收到名为 onUserEnter() 的事件通知,此时说明双方已经进入通话。
// 注册监听器
sCall.addDelegate(new TRTCCallingDelegate() {
    //...省略一些监听代码
    public void onInvited(String sponsor, final List<String> userIdList, boolean isFromGroup, int callType) {
        // 收到来自 sponsor 发过来的通话请求,此处代码选择接听,您也可以调用 reject() 拒绝之。
        scall.accept();
    } 
    public void onUserEnter(final String userId) {
        //用户接收了通话请求。此处编写接收后UI变化
    }
});
sCall.login(sdkappid, "aaa", usersig, new ActionCallback() {
    public void onSuccess() {
        sCall.call("aaa",TRTCCalling.TYPE_AUDIO_CALL);
    }
});
  • 多人通话
  1. 发起方:多人视频通话需要调用 TRTCCalling 中的 groupCall() 函数,并传入用户列表(userIdList)、通话类型(type)、 IM 群组 ID(groupId),其中 userIdList 为必填参数,通话类型为必填参数传入TYPE_AUDIO_CALL, groupId 为选填参数。
  2. 接收端:通过 onInvited() 事件通知能够接收到此次请求。
  3. 接收端:收到事件通知后可以调用 accept() 方法接听此次通话,也可以选择用 reject() 方法拒绝通话。
  4. 如果超过一定时间(默认30s)没有回复,接收方会收到 onCallingTimeOut() 的事件通知,发起方会收到 onNoResp(String userId) 事件通知。通话发起方在多个接收均未应答时 hangup() , 每个接收方均会收到 onCallingCancel() 事件通知。
  5. 如果需要离开当前多人通话可以调用 hangup() 方法。
  6. 如果通话中有用户中途加入或离开,那么其他用户均会接收到 onUserEnter() 或 onUserLeave() 事件通知。
// 前面省略...
// 拼凑需要拨打的用户列表
List<String> callList = new ArrayList();
callList.add("bbb");
callList.add("ccc");
callList.add("ddd");
// 如果您不是在一个 IM 群里发起的, groupId 可以传一个空串;
sCall.groupCall(callList, TRTCCalling.TYPE_AUDIO_CALL, "");

//结束通话  挂断
mTRTCCalling.hangup();

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • TRTC Android端开发接入学习之实现视频通话(五)

    经过上一篇《屏幕分享》功能的实践,我们知道了如何使用官方提供的功DEMO,快速开发。今天我们来尝试使用官方提供的组件和自定义的UI实现功能。

    腾讯云-hongyang
  • TRTC Android端开发接入学习之视频会议(八)

    视频会议是音视频通话的常见应用场景之一,TRTC对着这方面的支持必不可少,本次我们学习如何使用TRTC快速开发视频会议的功能。

    腾讯云-hongyang
  • TRTC Android端开发接入学习之环境快速搭建(三)

    通过前面对TRTC的基本了解,本期我们开始尝试使用SDK在本地搭建开发环境,同时说明SDK的基本用法

    腾讯云-hongyang
  • AnimationDrawable 实现正在加载的旋转动画

    要实现这样的效果  就是中间的那个   正在拼命加载数据中  然后是那个动画在不停的旋转,

    wust小吴
  • Android开发(35) 使用android_serialport_api 操作串口斑马打印机

    使用安卓设备操作串口的问题。 我找到一个框架:android_serialport_api,这个框架被托管在:

    zhangyunfeiVir
  • TRTC Android端开发接入学习之实现视频通话(五)

    经过上一篇《屏幕分享》功能的实践,我们知道了如何使用官方提供的功DEMO,快速开发。今天我们来尝试使用官方提供的组件和自定义的UI实现功能。

    腾讯云-hongyang
  • Android高级组件Gallery画廊视图使用方法详解

    画廊视图(Gallery)表示,能够按水平方向显示内容,并且可用手指直接拖动图片移动,一般用来浏览图片,被选中的选项位于中间,并且可以响应事件显示信息。在使用画...

    砸漏
  • Android开启新线程播放背景音乐

    在本实例用,开启一个新的线程播放背景音乐,在音乐文件播放完毕后,暂停5秒后重新开始播放。

    砸漏
  • 读取联系人

    Dream城堡
  • android蓝牙测试

    注意点:在执行getBondedDevices时候会花费一点时间,一开始我不知道,“已配对”一直没出现,以为出错了。后来上了趟厕所回来发现就有了!!!!尴尬!

    提莫队长

扫码关注云+社区

领取腾讯云代金券