文档导航
Android
SDK 版本:  5.X

主叫方

更新时间:2024-02-26 PDF

发起呼叫

调用 RongCallClient.startCall 方法发起单人或多人音视频通话,该方法默认打开前置摄像头。多人通话场景所有通话者必须在一个群组内。

  • 参数说明:

    参数 类型 必填 说明
    conversationType Conversation.ConversationType 会话类型
    targetId String 目标会话 ID,单人通话为对方 UserId,群组通话为 GroupId
    userIds List<String> 邀请参与通话的用户 ID 列表,不能为 null,必须包含 observerUserIds 中除发起者ID的所有用户ID
    observerUserIds List<String> 观察者列表,无观察者可传 null,当音视频发起方是观察者时,observerUserIds 需要包含发起方用户 ID
    mediaType RongCallCommon.CallMediaType 发起的通话媒体类型
    extra String 附加信息,透传至对端,对端通过 RongCallSession.getExtra() 获取
  • 示例代码:

    Conversation.ConversationType conversationType = Conversation.ConversationType.PRIVATE;
    String targetId = "001";
    List<String> userIds = new ArrayList<>();
    userIds.add("002");
    List<String> observerUserIds = new ArrayList<>();
    observerUserIds.add("003");
    RongCallCommon.CallMediaType mediaType = RongCallCommon.CallMediaType.VIDEO;
    String extra = "";
    RongCallClient.getInstance().startCall(conversationType, targetId, userIds, observerUserIds, mediaType, extra);
                  
    已复制
    1
    2
    3
    4
    5
    6
    7
    8
    9

指定摄像头发起呼叫

发起单人或多人音视频通话需要打开指定摄像头,请调用以下方法。

  • 参数说明:
参数 类型 必填 说明
cameraId int 摄像头 ID
mirror boolean 是否镜像视频流,详细说明请查看下方提示
conversationType Conversation.ConversationType 会话类型
targetId String 目标会话 ID,单人通话为对方 UserID,群组通话为 GroupId
userIds List<String> 邀请参与通话的用户 ID 列表,不能为空,必须包含 observerUserIds 中除发起者 ID 的所有用户 ID
observerUserIds List<String> 观察者列表,无观察者可传 null ,当音视频发起方是观察者时,observerUserIds 需要包含发起方用户 ID
mediaType RongCallCommon.CallMediaType 发起的通话媒体类型
extra String 附加信息,透传至对端,对端通过 RongCallSession.getExtra() 获取
提示

mirror 说明

在某些特殊设备上,后置摄像头被安装在设备的前面。为打开后置摄像头时可以正常显示,请使用镜像处理。mirror仅对本地有效(发送出去的数据依然是未处理数据)。

如果本地视频流做了镜像处理,为了对端观看体验可以在 IRongCallListener#onRemoteUserJoined(String, RongCallCommon.CallMediaType, int, SurfaceView) 回调中添加如下设置:

public void onRemoteUserJoined (String userId, RongCallCommon.CallMediaType mediaType,int userType, SurfaceView remoteVideo){
       if (null != remoteVideo) {
          ((RongRTCVideoView) remoteVideo).setMirror(boolean);//观看对方视频流是否镜像处理
       }
}
              
已复制
1
2
3
4
5

  • 示例代码:

    int cameraId = 1;
    boolean mirror = false;
    Conversation.ConversationType conversationType = Conversation.ConversationType.PRIVATE;
    String targetId = "001";
    List<String> userIds = new ArrayList<>();
    userIds.add("002");
    List<String> observerUserIds = new ArrayList<>();
    observerUserIds.add("003");
    RongCallCommon.CallMediaType mediaType = RongCallCommon.CallMediaType.VIDEO;
    String extra = "";
    RongCallClient.getInstance().startCall(cameraId, mirror, conversationType, targetId, userIds, observerUserIds, mediaType, extra, new StartCameraCallback() {
        @Override
        public void onDone(boolean b) {
        }
    
        @Override
        public void onError(int i) {
        }
    });
                  
    已复制
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19

挂断通话

调用 RongCallClient.hangUpCall 方法挂断通话,拒绝和挂断为同一个方法调用,SDK 内部会自动告知对方挂断、拒绝原因。

  • 参数说明:
返回值 返回类型 说明
callId String 呼叫 ID,可以从 RongCallSession.getCallId() 中获取
  • 示例代码:

    // im未连接或者不在通话中,RongCallClient 和 RongCallSession 为空
    if (RongCallClient.getInstance() != null && RongCallClient.getInstance().getCallSession() != null) {
        RongCallClient.getInstance().hangUpCall(RongCallClient.getInstance().getCallSession().getCallId());
    }
                  
    已复制
    1
    2
    3
    4

邀请通话

调用 RongCallClient.addParticipants 方法邀请用户加入当前通话(仅限群组),该方法必须在通话已经建立(IRongCallListener.onCallConnected)之后调用有效。

  • 参数说明:
参数 类型 必填 说明
callId String 通话 ID
userIds ArrayList<String> 邀请的用户 ID 列表,请一定包含 邀请的观察者列表 中的人员
observerUserIds ArrayList<String> 邀请的观察者列表,没有观察者可传 null
  • 示例代码:

    if (RongCallClient.getInstance() != null && RongCallClient.getInstance().getCallSession() != null) {
        String callId = RongCallClient.getInstance().getCallSession().getCallId();
        ArrayList<String> userIds = new ArrayList<>();
        userIds.add("002");
        userIds.add("003");
        ArrayList<String> observerUserIds = new ArrayList<>();
        observerUserIds.add("002");
        observerUserIds.add("003");
        RongCallClient.getInstance().addParticipants(callId, userIds, observerUserIds);
    }
                  
    已复制
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

文档反馈
意见反馈

您的改进建议

意见反馈

问题类型

联系我们

提交工单

技术支持|集成使用|产品方案


商务咨询

7 x 24 小时

为您解答方案与报价问题

131 6185 6839

文档反馈