客户端实现

更新时间: 2021/08/31 04: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

  1. 使用 Android Studio 创建工程。

  2. 通过 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'
    }
    
  3. 集成 NERTC SDK,并导入 NERtcVideoCall 组件。

    // rtc
    implementation 'com.netease.yunxin:nertc:3.8.1'
    // 呼叫组件
    implementation 'com.netease.yunxin.kit:call:1.2.0'
    
  4. 防止代码混淆,在 proguard-rules.pro 文件中,为 NERTC SDK 添加 -keep 类的配置,防止混淆 NERTC SDK 公共类名称。

    -keep class com.netease.lava.** {*;}
    -keep class com.netease.yunxin.** {*;}
    
  5. 打开 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"/>
    
  6. 单击 Sync Project With Gradle Files,重新同步 Android 项目文件。

2 初始化 NERtcVideoCall 组件并登录

  1. 调用 sharedInstance 获取组件实例。

  2. 调用 setupAppKey 初始化实例。

  3. 调用 setTokenService 注册获取 Token 的服务。

    在线上环境中,Token 的获取需要在您的应用服务端完成,然后由服务器通过安全通道把 Token 传递给客户端。Demo 中使用的 URL 为 Demo Server 地址,您需要替换为实际的 App Server 地址。

  4. 调用 IM SDK 的 login 实现登录。

  public static NERTCVideoCall sharedInstance(Context context) {
        return NERTCVideoCallImpl.sharedInstance(context);
    }

3 主叫发起视频呼叫

  1. 主叫方调用呼叫组件的 call 方法发起通话请求,并指定用户 ID(userid)和通话类型(type)。
  2. 被叫方会收到 onInvited 事件通知,表示收到对方邀请。
public abstract void call(String userId, ChannelType type);

4 被叫接听呼叫

  1. 接收方调用 accept() 函数,并同时调用 enableLocalVideo() 函数打开自己本地的图像。

    接收方也可以调用 reject() 拒绝此次通话。

  2. 当双方的音视频通道建立完成后,主叫方会收到 onUserEnter 事件通知,表示对方接受呼叫。

    此时音视频通话正式开始,双方用户均可以听到对方的声音和画面。

public abstract void accept(InviteParamBuilder invitedParam);
此文档是否对你有帮助?
有帮助
去反馈
  • 前提条件
  • 开发环境
  • 注意事项
  • 实现一对一视频通话
  • 1 集成SDK
  • 2 初始化 NERtcVideoCall 组件并登录
  • 3 主叫发起视频呼叫
  • 4 被叫接听呼叫