客户端实现
更新时间: 2021/08/31 12:17:16
网易云信音视频通话 2.0 产品为您提供开源的的一对一视频通话示例项目,您可以直接基于我们的 Demo 进行修改适配,也可以使用我们提供的 NERTCCallkit 呼叫组件并实现自定义 UI 界面,体验 NERTC SDK 的一对一实时音视频通话的效果。
前提条件
请确保您已完成以下操作:
- 创建应用并获取 App Key。
- 开通音视频通话 2.0 服务。
- 在云信控制台中为指定应用开通调试模式。
开发环境
在开始运行示例项目之前,请确保开发环境满足以下要求:
- Android SDK API 等级 18 或以上。
- Android Studio 3.0 或以上版本。
- Android 系统 4.3 或以上版本的移动设备。
注意事项
示例项目需要在调试模式下使用,此时无需传入 Token。您可以在集成开发阶段使用调试模式进行应用开发与测试。但是出于安全考虑,应用正式上线前,请在控制台中将指定应用的鉴权方式改回安全模式。
实现一对一视频通话
参考 nertcvideocalldemo module,创建自定义 UI 界面,即可实现视频通话功能。具体步骤如下:
1 集成SDK
-
使用 Android Studio 创建工程。
-
通过 Gradle 集成信令 SDK。
详细信息请参考 集成信令 SDK。
dependencies { compile fileTree(dir: 'libs', include: '*.jar') // 添加依赖。注意,版本号必须一致。 // 基础功能 (必需) compile 'com.netease.nimlib:basesdk:8.1.0' // 信令服务需要 compile 'com.netease.nimlib:avsignalling:8.1.0' }
-
集成 NERTC SDK,并导入 NERtcVideoCall 组件。
// rtc implementation 'com.netease.yunxin:nertc:3.8.1' // 呼叫组件 implementation 'com.netease.yunxin.kit:call:1.2.0'
-
防止代码混淆,在
proguard-rules.pro
文件中,为 NERTC SDK 添加 -keep 类的配置,防止混淆 NERTC SDK 公共类名称。-keep class com.netease.lava.** {*;} -keep class com.netease.yunxin.** {*;}
-
打开
app/src/main/AndroidManifest.xml
文件,添加必要的设备权限。<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.CHANGE_WIFI_STATE"/> <uses-permission android:name="android.permission.WAKE_LOCK"/> <uses-permission android:name="android.permission.CAMERA"/> <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.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.BROADCAST_STICKY"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-feature android:name="android.hardware.camera"/> <uses-feature android:name="android.hardware.camera.autofocus"/>
-
单击 Sync Project With Gradle Files,重新同步 Android 项目文件。
2 初始化 NERtcVideoCall 组件并登录
-
调用
sharedInstance
获取组件实例。 -
调用
setupAppKey
初始化实例。 -
调用
setTokenService
注册获取 Token 的服务。在线上环境中,Token 的获取需要在您的应用服务端完成,然后由服务器通过安全通道把 Token 传递给客户端。Demo 中使用的 URL 为 Demo Server 地址,您需要替换为实际的 App Server 地址。
-
调用 IM SDK 的 login 实现登录。
public static NERTCVideoCall sharedInstance(Context context) {
return NERTCVideoCallImpl.sharedInstance(context);
}
3 主叫发起视频呼叫
- 主叫方调用呼叫组件的
call
方法发起通话请求,并指定用户 ID(userid)和通话类型(type)。 - 被叫方会收到
onInvited
事件通知,表示收到对方邀请。
public abstract void call(String userId, ChannelType type);
4 被叫接听呼叫
-
接收方调用
accept()
函数,并同时调用enableLocalVideo()
函数打开自己本地的图像。接收方也可以调用
reject()
拒绝此次通话。 -
当双方的音视频通道建立完成后,主叫方会收到
onUserEnter
事件通知,表示对方接受呼叫。此时音视频通话正式开始,双方用户均可以听到对方的声音和画面。
public abstract void accept(InviteParamBuilder invitedParam);