登录房间
更新时间:2021-05-26
相关概念
实时音视频 SDK 使用房间和成员的概念,加入房间的成员可以发布自己的音视频流,在同一个房间内的其他成员可以接收到该用户的推流事件,订阅该音视频流即可完成音视频的播放流程。
房间和成员
- 房间: 音视频相关事件的接收管理模块,房间内部的成员事件(成员加入、成员离开等)通过房间进行分发;
- 成员: 加入房间成功的用户为房间内部成员。
注: 只有推流用户才会触发远端用户接收事件
客户端交互时序图
音视频架构图
使用步骤
初始化和 SDK 鉴权
在使用音视频 SDK 之前需先调用 SDK 初始化和鉴权接口完成 SDK 的鉴权
/**
* SDK 初始化
*/
public void initSDK();
/**
* SDK 鉴权
*
* @param appID 向LiveMe申请的appId
* @param appSign 向LiveMe申请的appSign
* @param userId 用户uid,辅助设置,可以不传
* @param callback 鉴权结果回调
*/
public synchronized void auth(String appID, String appSign, String userId, LVResultCallback1<Integer> callback)
/**
* 加入音视频房间(音视频会议)
* @param roomId 房间ID
* @param userId 用户ID
* @param isHost 是否是主持人
* @param isOnlyAudio 是否以音频模式加入,以音频模式加入,则没有视频流
* @param callback 房间回调监听
*/
mRtcEngine.loginRoom(roomId, userId, isHost, isOnlyAudio, (code, cmUsers) -> {
if (code == LVErrorCode.SUCCESS) {
// 登录成功
} else {
// 登录失败
}
});
userId
、roomId
格式要求:字符串
类型,长度不超过32,仅允许包含字母、数字或下划线。
登出房间
在退出房间的时候可调用此 api
,退出房间是否成功会通过 退出房间错误码返回。
/**
* 退出房间
* @param callback 离开房间结果回调
*/
mRtcEngine.logoutRoom(callback);
退出房间会触发 OnDeleteRemoter
代理回调,在此回调中可做相关处理。
/**
* 有成员离开的通知
* @param callback 离开用户ID
*/
public void onDeleteRemoter(String userId);
房间事件
登录房间监听
通过 loginRoom
方法设置 LVResultCallback2
类型的对象作为监听,LVResultCallback2
对象在登录房间后会回调相应的状态。
/**
* 加入房间的回调
* @param code 加入房间状态码
* @param users 用户列表,如果房间中有用户存在,该列表会自动生效
*/
public interface LVResultCallback2<Integer, ArrayList<LVUser>>> {
void onResult(Integer code, ArrayList<LVUser>> users);
}
登出房间监听
通过 logoutRoom
方法设置 LVResultCallback1
类型的对象作为监听,LVResultCallback1
对象在登出房间后会回调相应的状态。
/**
* 退出房间的回调
* @param code 退出房间状态码
*/
public interface LVResultCallback1<Integer> {
void onResult(Integer code);
}
其他房间监听
通过 setLiveRoomCallback
方法设置 LVRTCCallback
类型的对象作为监听,LVRTCCallback
对象会监听房间的相关状态,并回调对应的方法。
/**
* 房间断开的通知,网络异常时 SDK 会自动进行重连,90 秒如果重连失败会触发该方法回调
* @param code 错误码
*/
public void onRoomDisconnected(final int errorCode);
/**
* 有成员加入房间
* @param user 新加入房间的用户信息
*/
public void onAddRemoter(LVUser user);
/**
* 有成员离开房间
* @param userId 退出房间用户的ID
*/
public void onDeleteRemoter(String userId);
/**
* 用户被踢出房间
* @param reason 被踢原因
* @param roomId 房间ID
*/
public void onKickOff(int reason, String roomId);
// 房间重连成功通知,SDK 在网络断开和恢复时会自动进行重连,重连结果通过该回调通知 APP
public void onRoomReconnected();
回调接口或方法解析
-
LVResultCallback2
接口调用 loginRoom 方法登录房间之后会回调此接口的 onResult 方法,在此方法中可进行做推流处理,如果登录房间失败,也会返回对应的错误码。
-
LVResultCallback1
接口调用 logoutRoom 方法退出房间之后会回调此接口的 onResult 方法,代表退出房间。
-
onRoomDisconnected
方法如果网络不好房间断开,SDK 内部会自动自动进行重连,90 秒如果重连失败就会触发该方法回调此方法。
-
onAddRemoter
方法当在直播间内,有新成员调用 startPublishing 方法发起推流的时候,房间内其它人就会触发此回调方法,在此方法内可以播放新成员的流处理添加视图渲染。
-
onDeleteRemoter
房间内有人退出房间的时候就会回调此方法,可以在此方法内处理删除房间内成员视图、停止播放媒体流等处理。
-
onRoomReconnected
房间重连成功通知,SDK 在网络断开和恢复时会自动进行重连,重连结果通过该回调通知 APP。
-
onKickOff
当用户被踢出的时候,会回调此方法,告知被踢出和原因。