Public Member Functions

void nativeObjectRef (long nativeHandle)
 
void onLeaveChannel (int reason)
 
void onError (int error, int stat_code)
 
void onWarning (int warn)
 
void onJoinChannelSuccess (String channelId, long uid)
 
void onUserOffline (long uid, int reason)
 
void onUserJoined (long uid, String recordingDir)
 
void onActiveSpeaker (long uid)
 
void audioFrameReceived (long uid, AudioFrame frame)
 
void videoFrameReceived (long uid, int type, VideoFrame frame, int rotation)
 
void stopCallBack ()
 
void recordingPathCallBack (String path)
 
void onAudioVolumeIndication (AudioVolumeInfo[] infos)
 
void onFirstRemoteVideoDecoded (long uid, int width, int height, int elapsed)
 
void onFirstRemoteAudioFrame (long uid, int elapsed)
 
void onReceivingStreamStatusChanged (boolean receivingAudio, boolean receivingVideo)
 
void onConnectionLost ()
 
void onConnectionInterrupted ()
 

Member Function Documentation

◆ nativeObjectRef()

void io.agora.recording.RecordingEventHandler.nativeObjectRef ( long  nativeHandle)

This callback returns the JNI instance. You need to pass this JNI instance when calling each main method, except createChannel.

Parameters
nativeHandleThe recording engine.

◆ onLeaveChannel()

void io.agora.recording.RecordingEventHandler.onLeaveChannel ( int  reason)

This callback is triggered when a user leaves the channel.

Parameters
reasonThe reasons why the recording app leaves the channel. See LEAVE_PATH_CODE.

◆ onError()

void io.agora.recording.RecordingEventHandler.onError ( int  error,
int  stat_code 
)

This callback is triggered when an error occurrs during SDK runtime.

The SDK cannot fix the issue or resume running, which requires intervention from the app and informs the user on the issue.

Parameters
errorError codes.
stat_codeState codes.

◆ onWarning()

void io.agora.recording.RecordingEventHandler.onWarning ( int  warn)

This callback is triggered when a warning occurrs during SDK runtime.

In most cases, the app can ignore the warnings reported by the SDK because the SDK can usually fix the issue and resume running.

Parameters
warnWarning codes.

◆ onJoinChannelSuccess()

void io.agora.recording.RecordingEventHandler.onJoinChannelSuccess ( String  channelId,
long  uid 
)

This callback is triggered when the recording app successfully joins the specified channel with an assigned Channel ID and user ID.

Parameters
channelIdThe Channel ID assigned based on the channel name specified in createChannel.
uidUser ID of the user.

◆ onUserOffline()

void io.agora.recording.RecordingEventHandler.onUserOffline ( long  uid,
int  reason 
)

This callback is triggered when a user leaves the channel or goes offline.

The SDK reads the timeout data to determine if a user leaves the channel (or goes offline). If no data package is received from the user within 15 seconds, the SDK assumes the user is offline. A poor network connection may lead to false detections, so use signaling for reliable offline detection.

Parameters
uidUser ID of the user.
reasonThe rerasons why the user leaves the channel or goes offline. See USER_OFFLINE_REASON_TYPE.

◆ onUserJoined()

void io.agora.recording.RecordingEventHandler.onUserJoined ( long  uid,
String  recordingDir 
)

This callback is triggered when a remote user joins the channel and returns the UID of the new user.

If there are users in the channel before the recording app joins the channel, the SDK also reports on the UIDs of the existing users. This callback is triggered as many times as the number of the users in the channel.

Parameters
uidUser ID of the user.
recordingDirThe directory of the recorded files.

◆ onActiveSpeaker()

void io.agora.recording.RecordingEventHandler.onActiveSpeaker ( long  uid)

This callback reports the user who speaks loudest.

If you set the audioIndicationInterval parameter in RecordingConfig to be greater than 0, this callback returns the uid of the user with the highest voice volume over a certain time period.

Parameters
uidThe ID of the user with the highest voice volume over a certain time period.

◆ audioFrameReceived()

void io.agora.recording.RecordingEventHandler.audioFrameReceived ( long  uid,
AudioFrame  frame 
)

This callback is triggered when the raw audio data is received.

Parameters
uidUser ID of the user.
frameReceived raw audio data in PCM or AAC format. See AudioFrame.

◆ videoFrameReceived()

void io.agora.recording.RecordingEventHandler.videoFrameReceived ( long  uid,
int  type,
VideoFrame  frame,
int  rotation 
)

This callback is triggered when the raw video data is received.

This callback is triggered for every received raw video frame and can be used to detect sexually explicit content, if necessary.

Agora recommends capturing the I frame only and neglecting the others.

Parameters
uidUser ID of the remote user as specified in the createChannel() method. If no uid is previously assigned, the Agora server automatically assigns a uid.
typeThe format of the received video data:
  • 0: YUV
  • 1: H.264
  • 2: JPEG
frameReceived video data in YUV, H.264, or JPEG format. See VideoFrame.
rotationRotational angle: 0, 90, 180, or 270.

◆ stopCallBack()

void io.agora.recording.RecordingEventHandler.stopCallBack ( )

The SDK triggers this callback when it stops receiving other callbacks and cannot call the JNI function.

◆ recordingPathCallBack()

void io.agora.recording.RecordingEventHandler.recordingPathCallBack ( String  path)

This callback returns the directory of the recorded files.

Parameters
pathThe directory of the recorded files.

◆ onAudioVolumeIndication()

void io.agora.recording.RecordingEventHandler.onAudioVolumeIndication ( AudioVolumeInfo []  infos)

Reports the list of users who are speaking and their volumes.

This callback works only when audioIndicationInterval > 0.

Parameters
infosAn array containing the user ID and volume information for each speaker. For more information, see AudioVolumeInfo

◆ onFirstRemoteVideoDecoded()

void io.agora.recording.RecordingEventHandler.onFirstRemoteVideoDecoded ( long  uid,
int  width,
int  height,
int  elapsed 
)

Occurs when the first remote video frame is received and decoded.

Parameters
uidThe user ID.
widthThe width of the video frame.
heightThe height of the video frame.
elapsedTime elapsed (ms) from the local user calling createChannel until this callback is triggered.

◆ onFirstRemoteAudioFrame()

void io.agora.recording.RecordingEventHandler.onFirstRemoteAudioFrame ( long  uid,
int  elapsed 
)

Occurs when the first remote audio frame is received.

Parameters
uidThe user ID.
elapsedTime elapsed (ms) from the local user calling createChannel until this callback is triggered.

◆ onReceivingStreamStatusChanged()

void io.agora.recording.RecordingEventHandler.onReceivingStreamStatusChanged ( boolean  receivingAudio,
boolean  receivingVideo 
)

Occurs when the status of receiving the audio or video stream changes.

Parameters
receivingAudioWhether or not the recording application is receiving the audio stream.
receivingVideoWhether or not the recording application is receiving the video stream.

◆ onConnectionLost()

void io.agora.recording.RecordingEventHandler.onConnectionLost ( )

Occurs when the SDK cannot reconnect to Agora's edge server 10 seconds after its connection to the server is interrupted.

The SDK triggers this callback when it cannot connect to the server 10 seconds after calling createChannel regardless of whether it is in the channel or not.

This callback is different from onConnectionInterrupted:

  • The SDK triggers the onConnectionInterrupted callback when the SDK loses connection with the server for more than 4 seconds after it joins the channel.
  • The SDK triggers the onConnectionLost callback when the SDK loses connection with the server for more than 10 seconds, regardless of whether it joins the channel or not.

For both callbacks, the SDK tries to reconnect to the server until the app calls leaveChannel.

◆ onConnectionInterrupted()

void io.agora.recording.RecordingEventHandler.onConnectionInterrupted ( )

Occurs when the connection between the SDK and the server is interrupted.

The SDK triggers this callback when it cannot connect to the server 10 seconds after calling createChannel regardless of whether it is in the channel or not.

This callback is different from onConnectionLost:

  • The SDK triggers the onConnectionInterrupted callback when the SDK loses connection with the server for more than 4 seconds after it joins the channel.
  • The SDK triggers the onConnectionLost callback when the SDK loses connection with the server for more than 10 seconds, regardless of whether it joins the channel or not.

For both callbacks, the SDK tries to reconnect to the server until the app calls leaveChannel.