Package io.rong.calllib

## Interface IRongCallListener2

- All Implemented Interfaces:

      public interface IRongCallListener2

  通话事件监听，用于替代IRongCallListener，主要区别是为了能支持使用 TextureView渲染视频（原来只支持SurfaceView）

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---

  - ### Enum Constant Summary

    Enum Constants
    Enum Constant | Description
    --- | ---

  - ### Method Summary

    Modifier and Type | Method | Description
    --- | --- | ---
    `abstract void` | `onCallIncoming(RongCallSession callSession, View localVideo)` | 接收到来电。 被叫端收到来电后，通过回调 onCallIncoming 通知当前 call 的详细信息。
    `abstract void` | `onCallOutgoing(RongCallSession callSession, View localVideo)` | 电话已拨出。 主叫端拨出电话后，通过回调 onCallOutgoing 通知当前 call 的详细信息。
    `abstract void` | `onCallConnected(RongCallSession callSession, View localVideo)` | 已建立通话。 通话接通时，通过回调 onCallConnected 通知当前 call 的详细信息。
    `abstract void` | `onCallDisconnected(RongCallSession callSession, RongCallCommon.CallDisconnectedReason reason)` | 通话结束。 通话中，对方挂断，己方挂断，或者通话过程网络异常造成的通话中断，都会回调 onCallDisconnected。
    `abstract void` | `onRemoteUserRinging(String userId)` | 被叫端正在振铃。 主叫端拨出电话，被叫端收到请求，发出振铃响应时，回调 onRemoteUserRinging。
    `abstract void` | `onRemoteUserAccept(String userId, CallMediaType mediaType)` | Add From 5.1.
    `abstract void` | `onRemoteUserJoined(String userId, CallMediaType mediaType, int userType, View remoteVideo)` | 被叫端加入通话。 主叫端拨出电话，被叫端收到请求后，加入通话，回调 onRemoteUserJoined。
    `abstract void` | `onRemoteUserInvited(String userId, CallMediaType mediaType)` | 通话中的某一个参与者，邀请好友加入通话，发出邀请请求后，回调 onRemoteUserInvited。
    `abstract void` | `onRemoteUserLeft(String userId, RongCallCommon.CallDisconnectedReason reason)` | 通话中的远端参与者离开。 回调 onRemoteUserLeft 通知状态更新。
    `abstract void` | `onMediaTypeChanged(String userId, CallMediaType mediaType, View video)` | 当通话中的某一个参与者切换通话类型，例如由 audio 切换至 video，回调 onMediaTypeChanged。
    `abstract void` | `onError(RongCallCommon.CallErrorCode errorCode)` | 通话过程中，发生异常。
    `abstract void` | `onRemoteCameraDisabled(String userId, boolean disabled)` | 远端参与者 camera 状态发生变化时，回调 onRemoteCameraDisabled 通知状态变化。
    `abstract void` | `onRemoteMicrophoneDisabled(String userId, boolean disabled)` | 远端参与者 麦克风 状态发生变化时，回调 onRemoteMicrophoneDisabled 通知状态变化。
    `abstract void` | `onNetworkReceiveLost(String userId, int lossRate)` | 接收丢包率信息回调
    `abstract void` | `onNetworkSendLost(int lossRate, int delay)` | 发送丢包率信息回调
    `abstract void` | `onFirstRemoteVideoFrame(String userId, int height, int width)` | 收到某个用户的第一帧视频数据
    `abstract void` | `onFirstRemoteAudioFrame(String userId)` | 收到某个用户的第一帧音频数据
    `abstract void` | `onAudioLevelSend(String audioLevel)` | 本端音量大小回调
    `abstract void` | `onAudioLevelReceive(HashMap<String, String> audioLevel)` | 对端音量大小回调
    `abstract void` | `onRemoteUserPublishVideoStream(String userId, String streamId, String tag, View remoteVideo)` | 远端用户发布了自定义视频流 调用RongCallClient.getInstance().
    `abstract void` | `onRemoteUserUnpublishVideoStream(String userId, String streamId, String tag)` | 远端用户取消发布自定义视频流

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

  - ### Method Detail

    - #### onCallIncoming

          @Deprecated() abstract void onCallIncoming(RongCallSession callSession, View localVideo)

      接收到来电。 被叫端收到来电后，通过回调 onCallIncoming 通知当前 call 的详细信息。

      Parameters:
        `callSession` - 通话实体。
        `localVideo` - 本地 camera 信息。localVideo=null,不建议使用。如果想实现接听端预览功能请在收到通话邀请后调用 startIncomingPreview 实现。

    - #### onCallOutgoing

           abstract void onCallOutgoing(RongCallSession callSession, View localVideo)

      电话已拨出。 主叫端拨出电话后，通过回调 onCallOutgoing 通知当前 call 的详细信息。

      Parameters:
        `callSession` - 通话实体。
        `localVideo` - 本地视频渲染视图：默认为 android.view.

    - #### onCallConnected

           abstract void onCallConnected(RongCallSession callSession, View localVideo)

      已建立通话。 通话接通时，通过回调 onCallConnected 通知当前 call 的详细信息。

      Parameters:
        `callSession` - 通话实体。
        `localVideo` - 本地视频渲染视图：默认为 android.view.

    - #### onCallDisconnected

           abstract void onCallDisconnected(RongCallSession callSession, RongCallCommon.CallDisconnectedReason reason)

      通话结束。 通话中，对方挂断，己方挂断，或者通话过程网络异常造成的通话中断，都会回调 onCallDisconnected。

      Parameters:
        `callSession` - 通话实体。
        `reason` - 通话中断原因。

    - #### onRemoteUserRinging

           abstract void onRemoteUserRinging(String userId)

      被叫端正在振铃。 主叫端拨出电话，被叫端收到请求，发出振铃响应时，回调 onRemoteUserRinging。

      Parameters:
        `userId` - 振铃端用户 id。

    - #### onRemoteUserAccept

           abstract void onRemoteUserAccept(String userId, CallMediaType mediaType)

      Add From 5.1.12

      远端用户接听时回调 onRemoteUserAccept

      Parameters:
        `userId` - 接听的用户 id
        `mediaType` - 加入用户的媒体类型，audio or video。

    - #### onRemoteUserJoined

           abstract void onRemoteUserJoined(String userId, CallMediaType mediaType, int userType, View remoteVideo)

      被叫端加入通话。 主叫端拨出电话，被叫端收到请求后，加入通话，回调 onRemoteUserJoined。

      Parameters:
        `userId` - 加入用户的 id。
        `mediaType` - 加入用户的媒体类型，audio or video。
        `userType` - 加入用户的类型，1:正常用户,2:观察者。
        `remoteVideo` - 远端视频渲染视图：默认为 android.view.

    - #### onRemoteUserInvited

           abstract void onRemoteUserInvited(String userId, CallMediaType mediaType)

      通话中的某一个参与者，邀请好友加入通话，发出邀请请求后，回调 onRemoteUserInvited。

      Parameters:
        `userId` - 被邀请者的ID ,可以通过RongCallClient.getInstance().getCallSession().getObserverUserList().

    - #### onRemoteUserLeft

           abstract void onRemoteUserLeft(String userId, RongCallCommon.CallDisconnectedReason reason)

      通话中的远端参与者离开。 回调 onRemoteUserLeft 通知状态更新。

      Parameters:
        `userId` - 远端参与者的 id。
        `reason` - 远端参与者离开原因。

    - #### onMediaTypeChanged

           abstract void onMediaTypeChanged(String userId, CallMediaType mediaType, View video)

      当通话中的某一个参与者切换通话类型，例如由 audio 切换至 video，回调 onMediaTypeChanged。

      Parameters:
        `userId` - 切换者的 userId。
        `mediaType` - 切换者，切换后的媒体类型。
        `video` - 切换者，切换后的视频渲染视图，如果由 video 切换至 audio，则为 null。

    - #### onError

           abstract void onError(RongCallCommon.CallErrorCode errorCode)

      通话过程中，发生异常。

      Parameters:
        `errorCode` - 异常原因。

    - #### onRemoteCameraDisabled

           abstract void onRemoteCameraDisabled(String userId, boolean disabled)

      远端参与者 camera 状态发生变化时，回调 onRemoteCameraDisabled 通知状态变化。

      Parameters:
        `userId` - 远端参与者 id。
        `disabled` - 远端参与者 camera 是否可用。

    - #### onRemoteMicrophoneDisabled

           abstract void onRemoteMicrophoneDisabled(String userId, boolean disabled)

      远端参与者 麦克风 状态发生变化时，回调 onRemoteMicrophoneDisabled 通知状态变化。

      Parameters:
        `userId` - 远端参与者 id。
        `disabled` - 远端参与者 Microphone 是否可用。

    - #### onNetworkReceiveLost

           abstract void onNetworkReceiveLost(String userId, int lossRate)

      接收丢包率信息回调

      Parameters:
        `userId` - 远端用户的ID
        `lossRate` - 丟包率：0-100

    - #### onNetworkSendLost

           abstract void onNetworkSendLost(int lossRate, int delay)

      发送丢包率信息回调

      Parameters:
        `lossRate` - 丢包率，0-100
        `delay` - 发送端的网络延迟

    - #### onFirstRemoteVideoFrame

           abstract void onFirstRemoteVideoFrame(String userId, int height, int width)

      收到某个用户的第一帧视频数据

    - #### onFirstRemoteAudioFrame

           abstract void onFirstRemoteAudioFrame(String userId)

      收到某个用户的第一帧音频数据

    - #### onAudioLevelSend

           abstract void onAudioLevelSend(String audioLevel)

      本端音量大小回调

    - #### onAudioLevelReceive

           abstract void onAudioLevelReceive(HashMap<String, String> audioLevel)

      对端音量大小回调

      Parameters:
        `audioLevel` - key:userId , value:音量等级

    - #### onRemoteUserPublishVideoStream

           abstract void onRemoteUserPublishVideoStream(String userId, String streamId, String tag, View remoteVideo)

      远端用户发布了自定义视频流

      调用RongCallClient.getInstance().publishCustomVideoStream(String tag, publishCallBack callBack) 方法发布自定义视频流

      Parameters:
        `userId` - 用户 ID
        `streamId` - 自定义视频流 id
        `tag` - 自定义视频流 tag
        `remoteVideo` - 自定义视频渲染视图：默认为 android.view.

    - #### onRemoteUserUnpublishVideoStream

           abstract void onRemoteUserUnpublishVideoStream(String userId, String streamId, String tag)

      远端用户取消发布自定义视频流

      Parameters:
        `userId` - 用户 ID
        `streamId` - 自定义视频流 id
        `tag` - 自定义视频流 tag