跳到主要内容

基本操作

本文档介绍房间的基本操作,包括创建/加入房间和退出房间的完整流程。

创建/加入房间

通过 RCRTCEngine 下的 joinRoom 方法加入房间,如果指定的房间不存在,SDK 会自动创建该房间并将用户加入。

SessionId 说明

每个房间创建时,融云服务会生成全网唯一的 SessionId,用于后台业务查询和问题追踪。当房间内所有用户退出或被服务器判定掉线后,Session 结束。即使使用相同的 RoomId 重新创建房间,SessionId 也会更新为新值。

会议模式加入房间

适用于多人音视频会议场景,推荐使用简化的接口:

接口:

Java
joinRoom(String roomId, IRCRTCResultDataCallback<RCRTCRoom> callBack)

参数说明:

参数类型说明
roomIdString房间唯一标识符,支持大小写英文字母、数字、特殊符号(+ = - _),最长 64 个字符
callBackIRCRTCResultDataCallback<RCRTCRoom>加入房间结果回调

示例代码:

Java
String roomId = "meeting_room_001";

RCRTCEngine.getInstance().joinRoom(roomId, new IRCRTCResultDataCallback<RCRTCRoom>() {
@Override
public void onSuccess(RCRTCRoom room) {
// 加入房间成功

}

@Override
public void onFailed(RTCErrorCode errorCode) {
// 由于 SDK 未初始化,网络异常等原因,造成的加入房间失败后的逻辑处理 ...
// 失败原因参考 code 的具体含义。
// 处理逻辑可以是过段时间重新加入,或给用户弹通知等。
}
});

直播模式加入房间

适用于直播场景,需要指定房间类型和用户角色,推荐使用带配置的接口:

接口:

Java
joinRoom(String roomId, RCRTCRoomConfig config, IRCRTCResultDataCallback<RCRTCRoom> callBack)

参数说明:

参数类型说明
roomIdString房间唯一标识符,支持大小写英文字母、数字、特殊符号(+ = - _),最长 64 个字符
configRCRTCRoomConfig房间配置对象(可选),用于设置房间类型和用户角色等
callBackIRCRTCResultDataCallback<RCRTCRoom>加入房间结果回调

示例代码:

Java
String roomId = "live_room_001";

// 创建房间配置,设置为音视频直播模式,角色为主播
RCRTCRoomConfig config = RCRTCRoomConfig.Builder.create()
.setRoomType(RCRTCRoomType.LIVE_AUDIO_VIDEO)
.setLiveRole(RCRTCLiveRole.BROADCASTER)
.build();

RCRTCEngine.getInstance().joinRoom(roomId, config, new IRCRTCResultDataCallback<RCRTCRoom>() {
@Override
public void onSuccess(RCRTCRoom room) {
// 成功后的逻辑处理 ...
}

@Override
public void onFailed(RTCErrorCode errorCode) {
// 由于 SDK 未初始化,网络异常等原因,造成的加入房间失败后的逻辑处理 ...
// 失败原因参考 code 的具体含义。
// 处理逻辑可以是过段时间重新加入,或给用户弹通知等。
}
});

房间配置选项

RCRTCRoomConfig 提供以下配置选项:

配置方法说明适用场景
setRoomType()设置房间类型(会议模式/直播模式,默认是会议模式)所有场景
setLiveRole()设置直播角色(主播/观众)仅直播模式有效
setUserDatas()设置用户扩展信息。用户加入房间时可携带的扩展信息。服务端可以通过人员管理接口查询用户属性信息。需要携带额外用户数据时
setJoinType()设置多端登录策略。支持多端登录的应用

setJoinType() 方法,假设当前账号已在其他端加入房间,设置为 RCRTCJoinType.KICK 会导致在 用户其他端加入房间时踢掉已在房间的同账号用户。设置为 RCRTCJoinType.REFUSE,则会保留已在房间的同账号用户的登录状态,当前尝试登陆的用户会返回加入失败。

退出房间

退出房间需要按照正确的顺序操作,确保资源得到妥善释放。

操作步骤

步骤一:关闭视频采集(如果已开启)

在调用 leaveRoom 之前,必须手动关闭视频采集:

Java
RCRTCEngine.getInstance().getDefaultVideoStream().stopCamera();
重要提醒

leaveRoom 接口不会自动关闭视频采集。如果不主动关闭,可能导致:

  • 设备耗电量增加
  • 摄像头资源未释放

步骤二:退出房间

调用 leaveRoom 接口退出房间,SDK 会自动取消所有已发布和订阅的资源:

Java
RCRTCEngine.getInstance().leaveRoom(new IRCRTCResultCallback() {
@Override
public void onSuccess() {
// 成功退出房间
Log.d("RTC", "成功退出房间");

}

@Override
public void onFailed(RTCErrorCode errorCode) {
// 退出房间失败
Log.e("RTC", "退出房间失败: " + errorCode);

}
});