跳到主要内容

被叫方

接听通话

默认接听

当收到来自 onReceivedCall 的远端通话请求时,可使用 RongCallClientacceptCall 方法来接听。该方法默认打开前置摄像头。

示例代码

Java
public void onReceivedCall(RongCallSession session) {
RongCallClient.getInstance().acceptCall(session.getCallId());
}

指定摄像头接听

来电监听中接收到来电请求后,您可以调用如下方法接听通话,该方法可以打开指定 ID 的摄像头。

参数说明

参数类型必填说明
callIdString呼叫 ID,可以从 RongCallSession.getCallId() 中获取
cameraIdint摄像头 ID
mirrorboolean是否镜像视频流,详细说明请查看下方提示
callbackStartCameraCallback打开摄像头是否成功回调
提示

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); // 观看对方视频流是否镜像处理
}
}

返回参数说明

返回值返回类型说明
callIdString呼叫 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 内部会自动告知对方挂断、拒绝原因。

参数说明

参数类型说明
callIdString呼叫 ID,可以从 RongCallSession.getCallId() 中获取

示例代码

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