被叫方
接听通话
默认接听
当收到来自 onReceivedCall
的远端通话请求时,可使用 RongCallClient
的 acceptCall
方法来接听。该方法默认打开前置摄像头。
示例代码
Java
public void onReceivedCall(RongCallSession session) {
RongCallClient.getInstance().acceptCall(session.getCallId());
}
指定摄像头接听
来电监听中接收到来电请求后,您可以调用如下方法接听通话,该方法可以打开指定 ID 的摄像头。
参数说明
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
callId | String | 是 | 呼叫 ID,可以从 RongCallSession.getCallId() 中获取 |
cameraId | int | 是 | 摄像头 ID |
mirror | boolean | 是 | 是否镜像视频流,详细说明请查看下方提示 |
callback | StartCameraCallback | 是 | 打开摄像头是否成功回调 |
提示
mirror 说明
在某些特殊设备上,后置摄像头被安装在设备的前面。为打开后置摄像头时可以正常显示,请使用镜像处理。mirror
仅对本地有效(发送出去的数据依然是未处理数据)。
如果本地视频流做了镜像处理,为了对端观看体验可以在 IRongCallListener#onRemoteUserJoined(String, RongCallCommon.CallMediaType, int, SurfaceView)
回调中添加如下设置:
Java
public void onRemoteUserJoined(String userId, RongCallCommon.CallMediaType mediaType, int userType, SurfaceView remoteVideo) {
if (null != remoteVideo) {
((RongRTCVideoView) remoteVideo).setMirror(boolean); // 观看对方视频流是否镜像处理
}
}
返回参数说明
返回值 | 返回类型 | 说明 |
---|---|---|
callId | String | 呼叫 ID,可以从 RongCallSession.getCallId() 中获取 |
示例代码
Java
if (RongCallClient.getInstance() != null && RongCallClient.getInstance().getCallSession() != null) {
String callId = RongCallClient.getInstance().getCallSession().getCallId();
int cameraId = 0;
boolean mirror = false;
RongCallClient.getInstance().acceptCall(callId, cameraId, mirror, new StartCameraCallback() {
@Override
public void onDone(boolean isFront) {
}
@Override
public void onError(int errorCode) {
}
});
}
拒绝/挂断通话
调用 RongCallClient.hangUpCall
方法挂断通话。拒绝和挂断为同一个方法调用,SDK 内部会自动告知对方挂断、拒绝原因。
参数说明
参数 | 类型 | 说明 |
---|---|---|
callId | String | 呼叫 ID,可以从 RongCallSession.getCallId() 中获取 |
示例代码
Java
// im 未连接或者不在通话中,RongCallClient 和 RongCallSession 为空
if (RongCallClient.getInstance() != null && RongCallClient.getInstance().getCallSession() != null) {
RongCallClient.getInstance().hangUpCall(RongCallClient.getInstance().getCallSession().getCallId());
}