主叫方
更新时间:2024-02-26
PDF
发起呼叫
调用 RongCallClient.startCall
方法发起单人或多人音视频通话,该方法默认打开前置摄像头。多人通话场景所有通话者必须在一个群组内。
参数说明:
参数 类型 必填 说明 conversationType Conversation.ConversationType 是 会话类型 targetId String 是 目标会话 ID,单人通话为对方 UserId,群组通话为 GroupId userIds List<String>
是 邀请参与通话的用户 ID 列表,不能为 null
,必须包含 observerUserIds 中除发起者ID的所有用户IDobserverUserIds List<String>
是 观察者列表,无观察者可传 null
,当音视频发起方是观察者时,observerUserIds 需要包含发起方用户 IDmediaType 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