登录房间

更新时间: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 {
        // 登录失败
    }
});

userIdroomId 格式要求:字符串 类型,长度不超过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

    当用户被踢出的时候,会回调此方法,告知被踢出和原因。