跳到主要内容

房间事件回调

应用程序可以通过 RCRTCRoom 对象的 registerRoomListener(IRCRTCRoomEventsListener eventsListener) 方法注册一个 IRCRTCRoomEventsListener 监听器。

注册监听器后,App 可以监听房间的的状态及资源变化。在会议模式下,参会的远端用户的状态变化都会触发通知。直播模式下,仅主播角色的远端用户会触发通知。

提示

IRCRTCRoomEventsListener 监听器不会返回直播模式下观众相关的事件。原因如下:第一,观众只可订阅主播资源,不能发布资源,其操作对直播并无任何影响。第二,观众数量通常较多,如果应用针对观众进出直播间及订阅事件都进行处理,对应用程序的性能造成严重负面影响。

状态相关

  1. 远端参会用户(或远端主播用户)加入通知:

    当有远端参会用户(或远端主播用户)加入时触发。用户加入房间后才能发布资源,因此该回调代表远端参会用户(或远端主播用户)刚刚加入,此时并无任何资源发布,所以此刻也订阅不到该用户的任何媒体流。

    public void onUserJoined(RCRTCRemoteUser remoteUser)
  2. 远端参会用户(或远端主播用户)离开通知:

    当有远端参会用户(或远端主播用户)离开房间时触发,此时 SDK 会自动取消订阅该用户已发布的流,无需手动调用 unsubscribeStream

    public void onUserLeft(RCRTCRemoteUser remoteUser);
  3. 远端参会用户(或远端主播用户)掉线通知:

    当有远端参会用户(或远端主播用户)掉线时触发,代表该用户意外与融云服务断连超过 1 分钟。网络不好、App 意外崩溃或用户主动杀进程等情况,都会造成客户端与融云服务断连。如 1 分钟内没有恢复,则会被服务判定掉线,此时 SDK 会自动取消订阅该用户的所有资源,无需手动调用 unsubscribeStream

    public void onUserOffline(RCRTCRemoteUser remoteUser);
  4. 远端参会用户(或远端主播用户)音频静默状态变更通知:

    当远端参会用户(或远端主播用户)调用了音频流的 mute 方法时触发。参数 mute 为远端参会用户(或远端主播用户)更新后的值,true 代表音频静默,false 代表恢复正常。

    public void onRemoteUserMuteAudio(RCRTCRemoteUser remoteUser, RCRTCInputStream stream, boolean mute);
  5. 远端参会用户(或远端主播用户)视频静默状态变更通知:

    当远端参会用户(或远端主播用户)调用了视频流的 mute 方法时触发。参数 mute 为远端参会用户(或远端主播用户)更新后的值,true 代表视频静默,false 代表恢复正常。

    public void onRemoteUserMuteVideo(RCRTCRemoteUser remoteUser, RCRTCInputStream stream, boolean mute);

资源相关

  1. 远端参会用户(或远端主播用户)资源发布通知:

    当远端参会用户(或远端主播用户)发布资源时触发,streams 为该用户当前发布流的集合。从中可以获取发送人(userId),流标签(tag),媒体类型(type),当前状态(state)等信息,也可以调用 subscribeStream 接口,订阅其中的流。

    public void onRemoteUserPublishResource(RCRTCRemoteUser remoteUser, List<RCRTCInputStream> streams);
  2. 远端参会用户(或远端主播用户)资源取消发布通知:

    当远端参会用户(或远端主播用户)取消发布资源时触发,接收到后 SDK 会自动取消订阅这些流。开发者也可以根据这些流中的信息,来给用户做出相应的提示

    public void onRemoteUserUnpublishResource(RCRTCRemoteUser remoteUser, List<RCRTCInputStream> streams);

数据相关

  1. 第一个关键帧到达通知:

    public void onFirstRemoteVideoFrame(String userId, String tag);
  2. 房间自定义消息到达通知:

    public void onReceiveMessage(Message message);