实现群组通话

更新时间: 2025/10/11 11:12:08

本文介绍了如何通过网易云信呼叫组件(CallKit)提供的 API 进行群组通话功能开发的详细步骤和代码示例。

群组通话功能目前在 Beta 测试阶段,若需要使用,请联系您的网易云信商务经理开通。

image.png

适用场景

群组通话功能是现代通信应用的核心功能之一,它允许多个用户同时进行实时的视频和音频交流。无论是企业会议、在线教育、社交互动还是远程医疗咨询,这一功能都能提供高效的沟通手段,增强团队协作和信息共享。

  • 在线教育:教师和学生可以通过多人视频通话进行实时互动,共享屏幕和文档,提升在线学习体验。
  • 企业会议:团队成员无论身处何地,都能通过视频会议进行有效的远程协作和决策讨论。
  • 社交互动:朋友和家人可以通过群视频通话保持联系,共享生活瞬间。
  • 远程医疗咨询:医生和患者可以进行远程视频咨询,进行初步诊断和健康建议。
  • 紧急服务:紧急服务人员可以与现场人员进行实时视频通话,快速响应紧急情况。

前提条件

根据本文操作前,请确保您已经完成了以下设置:

初始化

以下示例代码介绍如何在 Android 应用中初始化群组通话功能,包括设置 SDK 选项和启动通话界面。

JavaCallKitUIOptions options = new CallKitUIOptions();
options....
options.enableGroup = true;
CallKitUI.init(getApplicationContext(), options);

开始群呼

以下示例代码提供了开始一个群组通话的代码示例,包括创建通话参数和启动通话。

JavaGroupCallParam param =
    new GroupCallParam.Builder()
        .callId(UUID.randomUUID().toString())
        .callees(userArray)
        .extraInfo(extraInfo.toString())
        .build();
CallKitUI.startGroupCall(this, param);

加入群呼

以下示例代码展示了如何加入一个正在进行的多人通话。

JavaGroupJoinParam param = new GroupJoinParam(callId);
CallKitUI.joinGroupCall(GroupSettingActivity.this, param);

通话中添加成员

以下示例代码说明了如何在通话中邀请其他成员加入通话。

JavaCallKitUIOptions options =
    new CallKitUIOptions.Builder()
        // 音视频通话 sdk appKey,用于通话中使用
        .rtcAppKey(ConfigCenter.getAppKey())
        // 当前用户 accId
        .currentUserAccId(AuthManager.getInstance().getUserModel().imAccid)
        .currentUserRtcUId(SettingActivity.RTC_CHANNEL_UID)
        // 通话接听成功的超时时间单位 毫秒,默认 30s
        .timeOutMillisecond(30 * 1000L)
        // 当系统版本为 Android Q 及以上时,若应用在后台系统限制不直接展示页面
        // 而是展示 notification,通过单击 notification 跳转呼叫页面
        // 此处为 notification 相关配置,如图标,提示语等。
        .notificationConfigFetcher(new DemoSelfNotificationConfigFetcher<>())
        .notificationConfigFetcherForGroup(
            new DemoSelfNotificationConfigFetcher<>())
        // 收到被叫时若 app 在后台,在恢复到前台时是否自动唤起被叫页面,默认为 true
        .resumeBGInvitation(true)
        .enableGroup(true)
        .enableAutoJoinWhenCalled(SettingActivity.ENABLE_AUTO_JOIN)
        // 设置用户信息
        .userInfoHelper(new SelfUserInfoHelper())
        // rtc 初始化模式
        .initRtcMode(SettingActivity.RTC_INIT_MODE)
        // 主叫加入 rtc 的时机
        .joinRtcWhenCall(SettingActivity.ENABLE_JOIN_RTC_WHEN_CALL)
        .contactSelector(
            (context, groupId, strings, listNEResultObserver) -> {
              if (listNEResultObserver == null) {
                return null;
              }
              TransHelper.launchTask(
                  context,
                  CODE_REQUEST_INVITE_USERS,
                  (innerContext, code) -> {
                    NERTCSelectCallUserActivity.startSelectUser(
                        innerContext,
                        CODE_REQUEST_INVITE_USERS,
                        CallModeType.RTC_GROUP_INVITE,
                        strings);
                    return null;
                  },
                  intentResultInfo -> {
                    if (intentResultInfo == null
                        || intentResultInfo.getValue() == null) {
                      return null;
                    }
                    Intent data = intentResultInfo.getValue();
                    if (intentResultInfo.getSuccess()) {
                      ArrayList<String> selectorList =
                          data.getStringArrayListExtra(
                              NERTCSelectCallUserActivity.KEY_CALL_USER_LIST);
                      listNEResultObserver.onResult(selectorList);
                    }
                    return null;
                  });
              return null;
            })
        .language(NECallUILanguage.AUTO)
        .build();
此文档是否对你有帮助?
有帮助
去反馈
  • 适用场景
  • 前提条件
  • 初始化
  • 开始群呼
  • 加入群呼
  • 通话中添加成员