云信一对一视频通话(Android)
本文主要展示如何集成云信的 NIM SDK 以及 NERTC SDK,快速实现一对一视频通话功能。您可以直接基于我们的 Demo 修改适配,也可以使用我们提供的 NERtcVideoCall 组件,实现自定义 UI。
功能介绍
- 视频呼叫/接听
- 开启/关闭麦克风
- 开启/关闭摄像头
- 切换前后摄像头
- 视频拒绝/挂断
环境准备
- 创建应用并获取 App Key。
在控制台中为指定应用开通信令和音视频通话 2.0 产品。
详细操作请参考开通服务。
下载场景Demo,并将
config.cpp
中的 appkey 更换为自己的 AppKey。为了安全起见,建议将 AppKey 放在 cpp 文件中。
- 替换
config.cpp
中的 baseURL 为自己的业务 baseURL,实现验证码等登陆功能。
运行示例项目
注意:Demo 中 RTCSDK 中的 token 传空,所以需要在运行示例项目前,请联系商务经理开通非安全模式。
功能实现
源码 Demo 的 nertcvideocalldemo 模块主要包含:
model
文件夹:包含可重用的开源组件 NERtcVideoCall。ui
文件夹:业务 UI。biz
文件夹:业务相关内容,建议您自行实现。
您可以在 NERtcVideoCall.java
中查看适用于一对一视频通话的接口。
NERtcVideoCall 组件结构:
修改 Demo 源代码:
Demo 跑通之后,可以修改 nertcvideocalldemo/ui 文件夹下的 Activity,复用联系人搜索页以及视频通话页。
文件/文件夹 | 功能 |
---|---|
NERTCSelectCallUserActivity | 联系人搜索页 |
NERTCVideoCallActivity | 视频通话页 |
基于 NERtcVideoCall 实现自定义 UI:
仅需拷贝 nertcvideocalldemo/model
文件夹到自己的工程,创建自定义 UI 界面,即可实现视频通话功能。具体步骤如下:
步骤1 集成SDK
使用 Android Studio 创建工程。
通过 Gradle 集成信令 SDK:具体可参考云信信令 SDK 集成
dependencies { compile fileTree(dir: 'libs', include: '*.jar') // 添加依赖。注意,版本号必须一致。 // 基础功能 (必需) compile 'com.netease.nimlib:basesdk:6.5.0' // 信令服务需要 compile 'com.netease.nimlib:avsignalling:6.5.0' }
集成SDK:
api 'com.netease.yunxin:nertc:3.6.0'
防止代码混淆,在 proguard-rules.pro 文件中,为 nertc sdk 添加 -keep 类的配置,这样可以防止混淆 nertc sdk 公共类名称:
-keep class com.netease.lava.** {*;} -keep class com.netease.yunxin.** {*;}
步骤2 添加权限
打开
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 项目文件。
步骤3 初始化 NERtcVideoCall 组件并登录:
public static NERTCVideoCall sharedInstance(Context context) {
return NERTCVideoCallImpl.sharedInstance(context);
}
步骤4 发起呼叫
public abstract void call(String userId, ChannelType type);
步骤5 接听呼叫
public abstract void accept(InviteParamBuilder invitedParam);
NERtcVideoCall API
NERtcVideoCall 组件的 API 接口列表如下:
接口名 | 接口描述 |
---|---|
setupAppKey | 初始化,所有功能需要先初始化 |
call | 开始呼叫 |
cancel | 取消呼叫 |
accept | 接受呼叫 |
reject | 拒绝呼叫 |
hangup | 挂断 |
setupLocalView | 设置自己画面 |
setupRemoteView | 设置其他用户画面 |
enableCamera | 开启/关闭摄像头 |
setMicMute | 开启/关闭麦克风 |
switchCamera | 切换摄像头 |
addDelegate | 添加代理,接收回调 |
NERtcVideoCall 组件的回调接口(NERTCCallingDelegate)列表如下:
接口名 | 接口描述 |
---|---|
onInvitedByUser | 收到对方邀请 |
onUserEnter | 对方接受呼叫 |
onRejectByUserId | 对方拒绝邀请 |
onCancelByUserId | 对方取消邀请 |
onUserBusy | 对方忙线 |
timeOut | 邀请超时 |
onCameraAvailable | 开启/关闭相机 |
onAudioAvailable | 开启/关闭麦克风 |
onUserHangup | 对方挂断 |


此文档对你是否有帮助

