Agora Java API Reference for Android
Classes | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
io.agora.rtc2.internal.RtcEngineImpl Class Reference
Inheritance diagram for io.agora.rtc2.internal.RtcEngineImpl:
io.agora.rtc2.RtcEngineInternal io.agora.rtc2.RtcEngineEx io.agora.rtc2.RtcEngine

Public Member Functions

 RtcEngineImpl (RtcEngineConfig config) throws Exception
 
Context getContext ()
 
synchronized void doDestroy ()
 
synchronized void reinitialize (RtcEngineConfig config)
 
synchronized void addHandler (IAgoraEventHandler handler)
 
synchronized void removeHandler (IAgoraEventHandler handler)
 
synchronized int setupRemoteVideo (VideoCanvas remote)
 
synchronized int setupRemoteVideoEx (VideoCanvas remote, RtcConnection connection)
 
synchronized int setupLocalVideo (VideoCanvas local)
 
synchronized int setLocalRenderMode (int renderMode)
 
synchronized int setLocalRenderMode (int renderMode, int mirrorMode)
 
synchronized int setRemoteRenderMode (int userId, int renderMode)
 
synchronized int setRemoteRenderMode (int userId, int renderMode, int mirrorMode)
 
synchronized int setRemoteRenderModeEx (int userId, int renderMode, int mirrorMode, RtcConnection connection)
 
synchronized int setLocalVideoMirrorMode (int mode)
 
synchronized int addVideoWatermark (AgoraImage watermark)
 
synchronized int clearVideoWatermarks ()
 
synchronized int enableDualStreamMode (boolean enabled)
 
int enableDualStreamMode (Constants.VideoSourceType sourceType, boolean enabled)
 
int enableDualStreamMode (Constants.VideoSourceType sourceType, boolean enabled, SimulcastStreamConfig streamConfig)
 
synchronized void monitorHeadsetEvent (boolean monitor)
 
synchronized void monitorBluetoothHeadsetEvent (boolean monitor)
 
boolean enableHighPerfWifiMode (boolean enable)
 
synchronized int joinChannel (String key, String channelName, String optionalInfo, int optionalUid)
 
synchronized int joinChannel (String token, String channelId, int uid, ChannelMediaOptions options)
 
synchronized int joinChannelEx (String token, String channelId, int uid, ChannelMediaOptions options, IRtcEngineEventHandler eventHandler, RtcConnection connection)
 
synchronized int updateChannelMediaOptions (ChannelMediaOptions options)
 
synchronized int updateChannelMediaOptionsEx (ChannelMediaOptions options, RtcConnection connection)
 
synchronized int leaveChannel ()
 
synchronized int leaveChannel (LeaveChannelOptions options)
 
synchronized int leaveChannelEx (String channelId, RtcConnection connection)
 
synchronized int startEchoTest (int intervalInSeconds)
 
synchronized int startEchoTest ()
 
synchronized int stopEchoTest ()
 
synchronized int startLastmileProbeTest (LastmileProbeConfig config)
 
synchronized int stopLastmileProbeTest ()
 
synchronized int enableVideo ()
 
synchronized int disableVideo ()
 
synchronized int enableLocalVideo (boolean enabled)
 
synchronized int startPreview ()
 
synchronized int stopPreview ()
 
synchronized int enableAudio ()
 
synchronized int disableAudio ()
 
synchronized int enableLocalAudio (boolean enabled)
 
synchronized int pauseAudio ()
 
synchronized int resumeAudio ()
 
synchronized int muteLocalAudioStream (boolean muted)
 
synchronized int muteLocalVideoStream (boolean muted)
 
synchronized int muteAllRemoteAudioStreams (boolean muted)
 
synchronized int setDefaultMuteAllRemoteAudioStreams (boolean muted)
 
synchronized int muteAllRemoteVideoStreams (boolean muted)
 
synchronized int setDefaultMuteAllRemoteVideoStreams (boolean muted)
 
synchronized int muteRemoteAudioStream (int uid, boolean muted)
 
synchronized int muteRemoteAudioStreamEx (int uid, boolean muted, RtcConnection connection)
 
synchronized int muteRemoteVideoStream (int uid, boolean muted)
 
synchronized int muteRemoteVideoStreamEx (int uid, boolean muted, RtcConnection connection)
 
synchronized int renewToken (String token)
 
synchronized int setDefaultAudioRoutetoSpeakerphone (boolean defaultToSpeaker)
 
synchronized int setEnableSpeakerphone (boolean speakerOn)
 
synchronized boolean isSpeakerphoneEnabled ()
 
synchronized int startRecordingService (String recordingKey)
 
synchronized int stopRecordingService (String recordingKey)
 
synchronized int refreshRecordingServiceStatus ()
 
synchronized int muteRecordingSignal (boolean muted)
 
synchronized int adjustRecordingSignalVolume (int volume)
 
synchronized int adjustPlaybackSignalVolume (int volume)
 
synchronized int adjustUserPlaybackSignalVolume (int uid, int volume)
 
synchronized int setRecordingAudioFrameParameters (int sampleRate, int channel, int mode, int samplesPerCall)
 
synchronized int setPlaybackAudioFrameParameters (int sampleRate, int channel, int mode, int samplesPerCall)
 
synchronized int setMixedAudioFrameParameters (int sampleRate, int channel, int samplesPerCall)
 
synchronized int setPlaybackAudioFrameBeforeMixingParameters (int sampleRate, int channel)
 
synchronized int registerAudioFrameObserver (IAudioFrameObserver observer)
 
synchronized int setHighQualityAudioParameters (boolean fullband, boolean stereo, boolean fullBitrate)
 
synchronized int enableInEarMonitoring (boolean enabled, int includeAudioFilters)
 
synchronized int enableInEarMonitoring (boolean enabled)
 
synchronized int enableWebSdkInteroperability (boolean enabled)
 
synchronized int setVideoQualityParameters (boolean preferFrameRateOverImageQuality)
 
synchronized void setPreferHeadset (boolean enabled)
 
synchronized int enableAudioVolumeIndication (int interval, int smooth)
 
synchronized int enableAudioQualityIndication (boolean enabled)
 
synchronized int enableTransportQualityIndication (boolean enabled)
 
synchronized int playRecap ()
 
synchronized int enableRecap (int interval)
 
synchronized int setVideoProfile (int profile, boolean swapWidthAndHeight)
 
synchronized int setVideoProfile (int width, int height, int frameRate, int bitrate)
 
synchronized int setVideoEncoderConfiguration (VideoEncoderConfiguration config)
 
synchronized int setVideoEncoderConfigurationEx (VideoEncoderConfiguration config, RtcConnection connection)
 
synchronized int setAudioProfile (int profile, int scenario)
 
synchronized int setAudioProfile (int profile)
 
synchronized int monitorAudioRouteChange (boolean isMonitoring)
 
synchronized int switchCamera ()
 
synchronized boolean isCameraZoomSupported ()
 
synchronized boolean isCameraTorchSupported ()
 
synchronized boolean isCameraFocusSupported ()
 
synchronized boolean isCameraAutoFocusFaceModeSupported ()
 
synchronized int setCameraZoomFactor (float factor)
 
synchronized float getCameraMaxZoomFactor ()
 
synchronized int setCameraFocusPositionInPreview (float positionX, float positionY)
 
synchronized int setCameraTorchOn (boolean isOn)
 
synchronized int setCameraAutoFocusFaceModeEnabled (boolean enabled)
 
synchronized int setCameraCapturerConfiguration (CameraCapturerConfiguration config)
 
synchronized int sendCustomReportMessage (String id, String category, String event, String label, int value)
 
synchronized int sendCustomReportMessageEx (String id, String category, String event, String label, int value, RtcConnection connection)
 
synchronized IMediaPlayer createMediaPlayer ()
 
synchronized int enableRemoteVideo (boolean enabled, int uid)
 
synchronized int stopRemoteVideo (int uid)
 
synchronized int stopAllRemoteVideo ()
 
synchronized int startAudioRecording (String filePath, int quality)
 
synchronized int startAudioRecording (AudioFileRecordingConfig config)
 
synchronized int stopAudioRecording ()
 
synchronized int startPlayingStream (String url)
 
synchronized int stopPlayingStream ()
 
synchronized int startAudioMixing (String filePath, boolean loopback, boolean replace, int cycle)
 
synchronized int stopAudioMixing ()
 
synchronized int pauseAudioMixing ()
 
synchronized int resumeAudioMixing ()
 
synchronized int adjustAudioMixingVolume (int volume)
 
synchronized int adjustAudioMixingPublishVolume (int volume)
 
synchronized int getAudioMixingPublishVolume ()
 
synchronized int adjustAudioMixingPlayoutVolume (int volume)
 
synchronized int getAudioMixingPlayoutVolume ()
 
synchronized int getAudioMixingDuration ()
 
synchronized int getAudioMixingCurrentPosition ()
 
synchronized int setAudioMixingPosition (int pos)
 
synchronized int useExternalAudioDevice ()
 
synchronized int setExternalAudioSource (boolean enabled, int sampleRate, int channels)
 
synchronized int setExternalAudioSource (boolean enabled, int sampleRate, int channels, int sourceCount, boolean localPlayback, boolean publish)
 
synchronized int pushExternalAudioFrame (byte[] data, long timestamp)
 
synchronized int pushExternalAudioFrame (ByteBuffer data, long timestamp, int sourceId)
 
synchronized int pushExternalAudioFrameEx (ByteBuffer data, long timestamp, int sourceId, RtcConnection connection)
 
synchronized int setExternalAudioSink (int sampleRate, int channels)
 
synchronized int pullPlaybackAudioFrame (byte[] data, int lengthInByte)
 
synchronized int pullPlaybackAudioFrame (ByteBuffer data, int lengthInByte)
 
synchronized int setLogFile (String filePath)
 
synchronized int setLogFilter (int filter)
 
int setLogFileSize (long fileSizeInKBytes)
 
synchronized int setProfile (String profile, boolean merge)
 
synchronized String getProfile ()
 
synchronized int setParameters (String parameters)
 
synchronized String getParameters (String parameters)
 
synchronized String getParameter (String parameter, String args)
 
synchronized String makeQualityReportUrl (String channelName, String listenerUid, String speakerUid, int format)
 
synchronized String getCallId ()
 
synchronized RtcConnection.CONNECTION_STATE_TYPE getConnectionState ()
 
synchronized RtcConnection.CONNECTION_STATE_TYPE getConnectionStateEx (RtcConnection connection)
 
synchronized int rate (String callId, int rating, String description)
 
synchronized int complain (String callId, String description)
 
synchronized int setChannelProfile (int profile)
 
synchronized int setClientRole (int role)
 
synchronized int setRemoteVideoStreamType (int userId, int streamType)
 
synchronized int setRemoteVideoStreamType (String userId, int streamType)
 
synchronized int setRemoteDefaultVideoStreamType (int streamType)
 
synchronized int setRemoteUserPriority (int uid, int userPriority)
 
synchronized int setLocalPublishFallbackOption (int option)
 
synchronized int setRemoteSubscribeFallbackOption (int option)
 
synchronized int setEncryptionMode (String encryptionMode)
 
synchronized int setEncryptionSecret (String secret)
 
synchronized int enableEncryption (boolean enabled, EncryptionConfig config)
 
synchronized int createDataStream (boolean reliable, boolean ordered)
 
synchronized int createDataStreamEx (boolean reliable, boolean ordered, RtcConnection connection)
 
synchronized int createDataStream (DataStreamConfig config)
 
synchronized int createDataStreamEx (DataStreamConfig config, RtcConnection connection)
 
synchronized int sendStreamMessage (int streamId, byte[] message)
 
synchronized int sendStreamMessageEx (int streamId, byte[] message, RtcConnection connection)
 
synchronized int updateSharedContext (EGLContext sharedContext)
 
synchronized int updateSharedContext (android.opengl.EGLContext sharedContext)
 
synchronized int setTextureId (int id, EGLContext sharedContext, int width, int height, long ts)
 
synchronized int setTextureId (int id, android.opengl.EGLContext sharedContext, int width, int height, long ts)
 
synchronized int setTextureIdWithMatrix (int id, EGLContext sharedContext, int format, int width, int height, long ts, float[] matrix)
 
synchronized int setTextureIdWithMatrix (int id, android.opengl.EGLContext sharedContext, int format, int width, int height, long ts, float[] matrix)
 
synchronized boolean isTextureEncodeSupported ()
 
synchronized int setExternalVideoSource (boolean enable, boolean useTexture, boolean encoded)
 
synchronized boolean pushExternalVideoFrame (AgoraVideoFrame frame)
 
synchronized int pushExternalVideoFrameEx (AgoraVideoFrame frame, RtcConnection connection)
 
boolean pushExternalVideoFrame (VideoFrame frame)
 
int pushExternalVideoFrameEx (VideoFrame frame, RtcConnection connection)
 
synchronized int pushExternalEncodedVideoFrame (ByteBuffer data, EncodedVideoFrameInfo frameInfo)
 
synchronized int pushExternalEncodedVideoFrameEx (ByteBuffer data, EncodedVideoFrameInfo frameInfo, RtcConnection connection)
 
synchronized int registerVideoEncodedImageReceiver (IVideoEncodedImageReceiver receiver)
 
synchronized int addPublishStreamUrl (String url, boolean transcodingEnabled)
 
synchronized int removePublishStreamUrl (String url)
 
synchronized int setLiveTranscoding (LiveTranscoding transcoding)
 
synchronized int addInjectStreamUrl (String url, LiveInjectStreamConfig config)
 
synchronized int removeInjectStreamUrl (String url)
 
synchronized int startChannelMediaRelay (ChannelMediaRelayConfiguration channelMediaRelayConfiguration)
 
synchronized int stopChannelMediaRelay ()
 
synchronized int updateChannelMediaRelay (ChannelMediaRelayConfiguration channelMediaRelayConfiguration)
 
synchronized long getNativeHandle ()
 
synchronized int configPublisher (PublisherConfiguration configuration)
 
synchronized int setVideoCompositingLayout (VideoCompositingLayout layout)
 
synchronized int clearVideoCompositingLayout ()
 
IAudioEffectManager getAudioEffectManager ()
 
synchronized int setLocalVoicePitch (double pitch)
 
synchronized int setLocalVoiceEqualization (int bandFrequency, int bandGain)
 
synchronized int setLocalVoiceReverb (int reverbKey, int value)
 
synchronized int setLocalVoiceChanger (int voiceChanger)
 
synchronized int setLocalVoiceReverbPreset (int reverbPreset)
 
synchronized int setInEarMonitoringVolume (int volume)
 
synchronized double getEffectsVolume ()
 
synchronized int setEffectsVolume (double volume)
 
synchronized int preloadEffect (int soundId, String filePath)
 
synchronized int playEffect (int soundId, String filePath, int loopCount, double pitch, double pan, double gain)
 
synchronized int playEffect (int soundId, String filePath, int loopCount, double pitch, double pan, double gain, boolean publish)
 
synchronized int playAllEffects (int loopCount, double pitch, double pan, double gain, boolean publish)
 
synchronized int getVolumeOfEffect (int soundId)
 
synchronized int setVolumeOfEffect (int soundId, double volume)
 
synchronized int pauseEffect (int soundId)
 
synchronized int pauseAllEffects ()
 
synchronized int resumeEffect (int soundId)
 
synchronized int resumeAllEffects ()
 
synchronized int stopEffect (int soundId)
 
synchronized int stopAllEffects ()
 
synchronized int unloadEffect (int soundId)
 
synchronized int unloadAllEffects ()
 
synchronized int setApiCallMode (int syncCallTimeout)
 
synchronized int setAudioOptionParams (String params)
 
synchronized String getAudioOptionParams ()
 
synchronized int setAudioSessionParams (String params)
 
synchronized String getAudioSessionParams ()
 
synchronized int startScreenCapture (Intent mediaProjectionPermissionResultData, ScreenCaptureParameters parameters)
 
synchronized int stopScreenCapture ()
 
synchronized int registerVideoFrameObserver (IVideoFrameObserver observer)
 
void finalize ()
 
synchronized boolean enableExtension (String vendor, boolean enable)
 
synchronized boolean setExtensionProperty (String vendor, String key, String value)
 
synchronized int registerMediaMetadataObserver (IMetadataObserver observer, int type)
 
synchronized int unregisterMediaMetadataObserver (IMetadataObserver observer, int type)
 
synchronized int setLogLevel (int level)
 
synchronized int enableExternalAudioSourceLocalPlayback (boolean enabled)
 
synchronized int registerLocalUserAccount (String appId, String userAccount)
 
synchronized int joinChannelWithUserAccount (String token, String channelId, String userAccount)
 
synchronized int joinChannelWithUserAccount (String token, String channelId, String userAccount, ChannelMediaOptions options)
 
synchronized int joinChannelWithUserAccountEx (String token, String channelId, String userAccount, ChannelMediaOptions options, IRtcEngineEventHandler eventHandler, RtcConnection connection)
 
UserInfo getUserInfoByUserAccount (String userAccount)
 
synchronized UserInfo getUserInfoByUserAccount (String userAccount, RtcConnection connection)
 
synchronized UserInfo getUserInfoByUid (int uid)
 
synchronized UserInfo getUserInfoByUid (int uid, RtcConnection connection)
 
native int nativePushExternalVideoFrame (long nativeRtcEngineAndroid, VideoFrame frame, int connId)
 
- Public Member Functions inherited from io.agora.rtc2.RtcEngine
void addHandler (IRtcEngineEventHandler handler)
 
void removeHandler (IRtcEngineEventHandler handler)
 
abstract int enableDualStreamMode (Constants.VideoSourceType sourceType, boolean enabled)
 
abstract int enableDualStreamMode (Constants.VideoSourceType sourceType, boolean enabled, SimulcastStreamConfig streamConfig)
 

Static Public Member Functions

static synchronized boolean initializeNativeLibs ()
 
static synchronized boolean initializeNativeLibs (String libPath)
 
static synchronized boolean loadExtension (String name)
 
static native String nativeGetSdkVersion ()
 
static native String nativeGetChatEngineVersion ()
 
static native String nativeGetErrorDescription (int err)
 
- Static Public Member Functions inherited from io.agora.rtc2.RtcEngine
static synchronized RtcEngine create (Context context, String appId, IRtcEngineEventHandler handler) throws Exception
 
static synchronized RtcEngine create (RtcEngineConfig config) throws Exception
 
static synchronized void destroy ()
 
static String getSdkVersion ()
 
static String getMediaEngineVersion ()
 
static String getErrorDescription (int error)
 
static SurfaceView CreateRendererView (Context context)
 
static TextureView CreateTextureView (Context context)
 
static int getRecommendedEncoderType ()
 

Protected Member Functions

void onEvent (int eventId, byte[] evt)
 
void onEventEx (String channelId, int connectionId, int eventId, byte[] evt)
 
void handleEvent (int eventId, byte[] evt, IAgoraEventHandler handler)
 
AudioManager getAudioManager (Context context)
 

Additional Inherited Members

- Static Protected Attributes inherited from io.agora.rtc2.RtcEngine
static RtcEngineImpl mInstance = null
 

Member Function Documentation

◆ setupRemoteVideo()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setupRemoteVideo ( VideoCanvas  remote)

Initializes the video view of a remote user.

This method initializes the video view of a remote stream on the local device. It affects only the video view that the local user sees.

Usually the app should specify the uid of the remote video in the method call before the remote user joins the channel. If the remote uid is unknown to the app, set it later when the app receives the onUserJoined callback.

To unbind the remote user from the view, set view in VideoCanvas as null.

Note
Ensure that you call this method in the UI thread.
Parameters
remoteThe remote video view settings: VideoCanvas.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setupRemoteVideoEx()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setupRemoteVideoEx ( VideoCanvas  remote,
RtcConnection  connection 
)

Initializes the video view of a remote user with a specified connection ID.

This method initializes the video view of a remote stream on the local device. It affects only the video view that the local user sees.

Usually the app should specify the uid of the remote video in the method call before the remote user joins the channel. If the remote uid is unknown to the app, set it later when the app receives the onUserJoined callback.

To unbind the remote user from the view, set view in VideoCanvas as null.

Note
Ensure that you call this method in the UI thread.
Parameters
remoteThe remote video view settings: VideoCanvas.
connectionAn output parameter which is used to control different connection instances.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngineEx.

◆ setupLocalVideo()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setupLocalVideo ( VideoCanvas  local)

Initializes the local video view.

This method initializes the video view of the local stream on the local device. It affects only the video view that the local user sees, not the published local video stream.

To unbind the local video from the view, set view in VideoCanvas as null.

Note
Call this method before joining a channel.
Parameters
localThe local video view setting: VideoCanvas.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setLocalRenderMode() [1/2]

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setLocalRenderMode ( int  renderMode)

Updates the display mode of the local video view.

After initializing the local video view, you can call this method to update its rendering mode. It affects only the video view that the local user sees, not the published local video stream.

Note
  • Ensure that you have called setupLocalVideo to initialize the local video view before this method.
  • During a call, you can call this method as many times as necessary to update the local video view.
Parameters
renderModeSets the local display mode:
  • RENDER_MODE_HIDDEN(1): Uniformly scale the video until it fills the visible boundaries (cropped). One dimension of the video may have clipped contents.
  • RENDER_MODE_FIT(2): Uniformly scale the video until one of its dimension fits the boundary (zoomed to fit). Areas that are not filled due to the disparity in the aspect ratio will be filled with black.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setLocalRenderMode() [2/2]

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setLocalRenderMode ( int  renderMode,
int  mirrorMode 
)

Updates the display mode of the local video view.

After initializing the local video view, you can call this method to update its rendering mode. It affects only the video view that the local user sees, not the published local video stream.

Note
  • Ensure that you have called setupLocalVideo to initialize the local video view before this method.
  • During a call, you can call this method as many times as necessary to update the local video view.
Parameters
renderModeSets the local display mode:
  • RENDER_MODE_HIDDEN(1): Uniformly scale the video until it fills the visible boundaries (cropped). One dimension of the video may have clipped contents.
  • RENDER_MODE_FIT(2): Uniformly scale the video until one of its dimension fits the boundary (zoomed to fit). Areas that are not filled due to the disparity in the aspect ratio will be filled with black.
mirrorModeSets the local video mirror mode:
  • VIDEO_MIRROR_MODE_AUTO(0): (Default) The mirror mode determined by the SDK. If you use the front camera, the SDK enables the mirror mode; if you use the rear camera, the SDK disables the mirror mode.
  • VIDEO_MIRROR_MODE_ENABLED(1): Enable the mirror mode.
  • VIDEO_MIRROR_MODE_DISABLED(2): Disable the mirror mode.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setRemoteRenderMode() [1/2]

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setRemoteRenderMode ( int  userId,
int  renderMode 
)

Updates the display mode of the video view of a remote user.

After initializing the video view of a remote user, you can call this method to update its rendering and mirror modes. This method affects only the video view that the local user sees.

Note
  • Ensure that you have called setupRemoteVideo to initialize the remote video view before calling this method.
  • During a call, you can call this method as many times as necessary to update the display mode of the video view of a remote user.
Parameters
uidID of the remote user.
renderModeSets the remote display mode:
  • RENDER_MODE_HIDDEN(1): Uniformly scale the video until it fills the visible boundaries (cropped). One dimension of the video may have clipped contents.
  • RENDER_MODE_FIT(2): Uniformly scale the video until one of its dimension fits the boundary (zoomed to fit). Areas that are not filled due to the disparity in the aspect ratio will be filled with black.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setRemoteRenderMode() [2/2]

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setRemoteRenderMode ( int  userId,
int  renderMode,
int  mirrorMode 
)

Updates the display mode of the video view of a remote user.

After initializing the video view of a remote user, you can call this method to update its rendering and mirror modes. This method affects only the video view that the local user sees.

Note
  • Ensure that you have called setupRemoteVideo to initialize the remote video view before calling this method.
  • During a call, you can call this method as many times as necessary to update the display mode of the video view of a remote user.
Parameters
uidID of the remote user.
renderModeSets the remote display mode:
  • RENDER_MODE_HIDDEN(1): Uniformly scale the video until it fills the visible boundaries (cropped). One dimension of the video may have clipped contents.
  • RENDER_MODE_FIT(2): Uniformly scale the video until one of its dimension fits the boundary (zoomed to fit). Areas that are not filled due to the disparity in the aspect ratio will be filled with black.
mirrorModeSets the remote video mirror mode:
  • VIDEO_MIRROR_MODE_ENABLED(1): Enable the mirror mode.
  • VIDEO_MIRROR_MODE_DISABLED(2): Disable the mirror mode.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setRemoteRenderModeEx()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setRemoteRenderModeEx ( int  uid,
int  renderMode,
int  mirrorMode,
RtcConnection  connection 
)

Updates the display mode of the video view of a remote user with the specified connection.

After initializing the video view of a remote user, you can call this method to update its rendering and mirror modes. This method affects only the video view that the local user sees.

Note
  • Ensure that you have called setupRemoteVideo to initialize the remote video view before calling this method.
  • During a call, you can call this method as many times as necessary to update the display mode of the video view of a remote user.
Parameters
uidID of the remote user.
renderModeSets the remote display mode:
  • RENDER_MODE_HIDDEN(1): Uniformly scale the video until it fills the visible boundaries (cropped). One dimension of the video may have clipped contents.
  • RENDER_MODE_FIT(2): Uniformly scale the video until one of its dimension fits the boundary (zoomed to fit). Areas that are not filled due to the disparity in the aspect ratio will be filled with black.
mirrorModeSets the remote video mirror mode:
  • VIDEO_MIRROR_MODE_ENABLED(1): Enable the mirror mode.
  • VIDEO_MIRROR_MODE_DISABLED(2): Disable the mirror mode.
connectionAn output parameter which is used to control different connection instances.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngineEx.

◆ setLocalVideoMirrorMode()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setLocalVideoMirrorMode ( int  mode)

Sets the local video mirror mode.

Use this method before calling the startPreview method, or the mirror mode does not take effect until you call the startPreview method again.

Parameters
mirrorModeSets the local video mirror mode:
  • VIDEO_MIRROR_MODE_AUTO(0): (Default) The mirror mode determined by the SDK. If you use the front camera, the SDK enables the mirror mode; if you use the rear camera, the SDK disables the mirror mode.
  • VIDEO_MIRROR_MODE_ENABLED(1): Enable the mirror mode.
  • VIDEO_MIRROR_MODE_DISABLED(2): Disable the mirror mode.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ enableDualStreamMode()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.enableDualStreamMode ( boolean  enabled)

Enables or disables the dual video stream mode.

If dual-stream mode is enabled, the subscriber can choose to receive the high-stream (high-resolution high-bitrate video stream) or low-stream (low-resolution low-bitrate video stream) video using setRemoteVideoStreamType.

Parameters
enabled
  • true: Enable the dual-stream mode.
  • false: (default) Disable the dual-stream mode.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ monitorHeadsetEvent()

synchronized void io.agora.rtc2.internal.RtcEngineImpl.monitorHeadsetEvent ( boolean  monitor)

Monitors external headset device events.

Parameters
monitorWhether to enable monitoring external headset device events. True/False.
Returns
  • 0: Success.
  • <0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ monitorBluetoothHeadsetEvent()

synchronized void io.agora.rtc2.internal.RtcEngineImpl.monitorBluetoothHeadsetEvent ( boolean  monitor)

Monitors Bluetooth headset device events.

Parameters
monitorWhether to enable monitoring Bluetooth headset device events. True/False.
Returns
  • 0: Success.
  • <0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ joinChannel() [1/2]

synchronized int io.agora.rtc2.internal.RtcEngineImpl.joinChannel ( String  token,
String  channelName,
String  optionalInfo,
int  optionalUid 
)

Joins a channel.

Users in the same channel can talk to each other; and multiple users in the same channel can start a group chat. Note that users using different App IDs cannot call each other.

Once in a call, the user must call the leaveChannel method to exit the current call before entering another channel.

Note
  • This method allows you to join only one channel at a time.
  • A channel does not accept duplicate uids, that is, two users with the same uid. If you set uid as 0, the system automatically assigns a user ID.
  • Ensure that the app ID you use to generate the token is the same app ID that you pass in the create method.
Parameters
tokenThe token for authentication.
  • In situations not requiring high security: You can use the temporary token generated at Console. For details, see Get a temporary token.
  • In situations requiring high security: Set it as the token generated at you server. For details, see Generate a token.
channelNameThe unique channel name for the AgoraRTC session in the string format. The string length must be less than 64 bytes. Supported character scopes are:
  • All lowercase English letters: a to z.
  • All uppercase English letters: A to Z.
  • All numeric characters: 0 to 9.
  • The space character.
  • Punctuation characters and other symbols, including: "!", "#", "$", "%", "&", "(", ")", "+", "-", ":", ";", "<", "=", ".", ">", "?", "@", "[", "]", "^", "_", " {", "}", "|", "~", ",".
optionalInfo(Optional) Additional information about the channel that you want to add. It can be set as a NULL string or channel related information. Other users in the channel will not receive this message.
optionalUid(Optional) User ID: A 32-bit unsigned integer ranging from 1 to (2^32-1). It must be unique. If not assigned (or set to 0), the SDK assigns one and reports it in the onJoinChannelSuccess callback. Your app must record and maintain the returned value as the SDK does not maintain it.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ joinChannel() [2/2]

synchronized int io.agora.rtc2.internal.RtcEngineImpl.joinChannel ( String  token,
String  channelId,
int  uid,
ChannelMediaOptions  options 
)

Joins a channel with media options.

Users in the same channel can talk to each other; and multiple users in the same channel can start a group chat. Note that users using different App IDs cannot call each other.

Once in a call, the user must call the leaveChannel method to exit the current call before entering another channel.

Note
  • This method allows you to join only one channel at a time.
  • A channel does not accept duplicate uids, that is, two users with the same uid. If you set uid as 0, the system automatically assigns a user ID.
  • Ensure that the app ID you use to generate the token is the same app ID that you pass in the create method.
Parameters
tokenThe token for authentication.
  • In situations not requiring high security: You can use the temporary token generated at Console. For details, see Get a temporary token.
  • In situations requiring high security: Set it as the token generated at you server. For details, see Generate a token.
channelIdThe unique channel name for the AgoraRTC session in the string format. The string length must be less than 64 bytes. Supported character scopes are:
  • All lowercase English letters: a to z.
  • All uppercase English letters: A to Z.
  • All numeric characters: 0 to 9.
  • The space character.
  • Punctuation characters and other symbols, including: "!", "#", "$", "%", "&", "(", ")", "+", "-", ":", ";", "<", "=", ".", ">", "?", "@", "[", "]", "^", "_", " {", "}", "|", "~", ",".
uid(Optional) User ID: A 32-bit unsigned integer ranging from 1 to (2^32-1). It must be unique. If not assigned (or set to 0), the SDK assigns one and reports it in the onJoinChannelSuccess callback. Your app must record and maintain the returned value as the SDK does not maintain it.
optionsThe channel media options: ChannelMediaOptions.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ joinChannelEx()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.joinChannelEx ( String  token,
String  channelId,
int  uid,
ChannelMediaOptions  options,
IRtcEngineEventHandler  eventHandler,
RtcConnection  connection 
)

Joins a channel with the connection ID.

You can call this method multiple times to join more than one channels at a time.

Parameters
tokenThe token for authentication:
  • In situations not requiring high security: You can use the temporary token generated at Console. For details, see Get a temporary token.
  • In situations requiring high security: Set it as the token generated at your server. For details, see Get a token.
channelIdThe unique channel name for the AgoraRTC session in the string format. The string length must be less than 64 bytes. Supported character scopes are:
  • All lowercase English letters: a to z.
  • All uppercase English letters: A to Z.
  • All numeric characters: 0 to 9.
  • The space character.
  • Punctuation characters and other symbols, including: "!", "#", "$", "%", "&", "(", ")", "+", "-", ":", ";", "<", "=", ".", ">", "?", "@", "[", "]", "^", "_", " {", "}", "|", "~", ",".
uidThe user ID. A 32-bit unsigned integer with a value ranging from 1 to (2^32-1).
optionsThe channel media options: ChannelMediaOptions.
eventHandlerThe pointer to the IRtcEngine event handler: IRtcEngineEventHandler.
connectionAn output parameter which is used to control different connection instances when you join the same channel multiple times.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngineEx.

◆ updateChannelMediaOptions()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.updateChannelMediaOptions ( ChannelMediaOptions  options)

Updates the channel media options after joining the channel.

Parameters
optionsThe channel media options: ChannelMediaOptions.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ updateChannelMediaOptionsEx()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.updateChannelMediaOptionsEx ( ChannelMediaOptions  options,
RtcConnection  connection 
)

Updates the media options after joining the channel with specified connection.

Parameters
optionsThe channel media options: ChannelMediaOptions.
connectionAn output parameter which is used to control different connection instances.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngineEx.

◆ leaveChannel() [1/2]

synchronized int io.agora.rtc2.internal.RtcEngineImpl.leaveChannel ( )

Leaves the channel.

This method allows a user to leave the channel, for example, by hanging up or exiting a call.

After joining a channel, the user must call this method to end the current call before joining another one. This method also releases all resources related to the call.

This method is an asynchronous call, which means that the result of this method returns even before the user has not actually left the channel. Once the user successfully leaves the channel, the SDK triggers the onLeaveChannel callback.

Note
If you call destroy immediately after this method, the leaveChannel process will be interrupted, and the SDK will not trigger the onLeaveChannel callback.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ leaveChannel() [2/2]

synchronized int io.agora.rtc2.internal.RtcEngineImpl.leaveChannel ( LeaveChannelOptions  options)

Leaves the channel.

Parameters
optionsThe leave channel options.

This method allows a user to leave the channel, for example, by hanging up or exiting a call.

This method is an asynchronous call, which means that the result of this method returns even before the user has not actually left the channel. Once the user successfully leaves the channel, the SDK triggers the onLeaveChannel callback.

Note
If you call release immediately after this method, the leaveChannel process will be interrupted, and the SDK will not trigger the onLeaveChannel callback.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ leaveChannelEx()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.leaveChannelEx ( String  channelId,
RtcConnection  connection 
)

Leaves the channel with the specified connection ID.

Parameters
channelIdThe channel name.
connectionAn output parameter which is used to control different connection instances.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngineEx.

◆ startEchoTest() [1/2]

synchronized int io.agora.rtc2.internal.RtcEngineImpl.startEchoTest ( int  intervalInSeconds)

Starts an audio call test.

Since
v2.4.0.

In the audio call test, you record your voice. If the recording plays back within the set time interval, the audio devices and the network connection are working properly.

Note

Reimplemented from io.agora.rtc2.RtcEngine.

◆ startEchoTest() [2/2]

synchronized int io.agora.rtc2.internal.RtcEngineImpl.startEchoTest ( )
Deprecated:
Now use startEchoTest(int)

Starts an audio call test to determine whether the audio devices (for example, headset and speaker) and the network connection are working properly.

In the test, the user first speaks, and the recording is played back in 10 seconds. If the user can hear the recording in 10 seconds, it indicates that the audio devices and network connection work properly.

Note: After calling the startEchoTest method, call stopEchoTest to end the test; otherwise the application cannot run the next echo test, nor can it call the token, java.lang.String channelName, java.lang.String optionalInfo, int optionalUid) joinChannel method to start a new call.

Returns
  • 0: Success.
  • <0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ stopEchoTest()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.stopEchoTest ( )

Stops an audio call test.

Returns
  • 0: Succeeded.
  • <0: Failed.
    • ERR_REFUSED(-5). Failed to stop the echo test. The echo test may not be running.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ startLastmileProbeTest()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.startLastmileProbeTest ( LastmileProbeConfig  config)

◆ stopLastmileProbeTest()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.stopLastmileProbeTest ( )

Stops the last-mile network probe test.

Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ enableVideo()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.enableVideo ( )

Enables the video.

You can call this method either before joining a channel or during a call. If you call this method before entering a channel, the service starts the video; if you call it during a call, the audio call switches to a video call.

Note
This method controls the underlying states of the Engine. It is still valid after one leaves the channel.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ disableVideo()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.disableVideo ( )

Disables the video.

This method stops capturing the local video and receiving any remote video. To enable the local preview function, call enableLocalVideo (true).

Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ enableLocalVideo()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.enableLocalVideo ( boolean  enabled)

Disables or re-enables the local video capture.

Once you enable the video using enableVideo, the local video is enabled by default. This method disables or re-enables the local video capture.

enableLocalVideo(false) applies to scenarios when the user wants to watch the remote video without sending any video stream to the other user.

Note
Call this method after enableVideo. Otherwise, this method may not work properly.
Parameters
enabledDetermines whether to disable or re-enable the local video, including the capturer, renderer, and sender:
  • true: (Default) Re-enable the local video.
  • false: Disable the local video. Once the local video is disabled, the remote users can no longer receive the video stream of this user, while this user can still receive the video streams of other remote users. When you set enabled as false, this method does not require a local camera.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ startPreview()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.startPreview ( )

Starts the local video preview before joining a channel.

Once you call this method to start the local video preview, if you leave the channel by calling leaveChannel, the local video preview remains until you call stopPreview to disable it.

Returns

Reimplemented from io.agora.rtc2.RtcEngine.

◆ stopPreview()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.stopPreview ( )

Stops the local video preview and the video.

Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ enableAudio()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.enableAudio ( )

Enables the audio.

The audio is enabled by default.

Note
This method controls the underlying states of the Engine. It is still valid after one leaves channel.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ disableAudio()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.disableAudio ( )

Disables the audio.

Note
This method controls the underlying states of the Engine. It is still valid after one leaves channel.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ enableLocalAudio()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.enableLocalAudio ( boolean  enabled)

Enables or disables the local audio capture.

The audio function is enabled by default. This method disables or re-enables the local audio function, that is, to stop or restart local audio capture and processing.

This method does not affect receiving or playing the remote audio streams, and enableLocalAudio (false) is applicable to scenarios where the user wants to receive remote audio streams without sending any audio stream to other users in the channel.

Parameters
enabledDetermines whether to disable or re-enable the local audio function:
  • true: (Default) Re-enable the local audio function, that is, to start local audio capture and processing.
  • false: Disable the local audio function, that is, to stop local audio capture and processing.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ pauseAudio()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.pauseAudio ( )

Disables the audio function in the channel.

Note: This method controls the underlying states of the Engine. It is still valid after one leaves channel.

Returns
  • 0: Success.
  • <0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ resumeAudio()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.resumeAudio ( )

Enables the audio function in the channel.

Returns
  • 0: Success.
  • <0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ muteLocalAudioStream()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.muteLocalAudioStream ( boolean  muted)

Stops or resumes sending the local audio stream.

Parameters
muteDetermines whether to send or stop sending the local audio stream:
  • true: Stop sending the local audio stream.
  • false: (Default) Send the local audio stream.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ muteLocalVideoStream()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.muteLocalVideoStream ( boolean  muted)

Stops or resumes sending the local video stream.

Parameters
muteDetermines whether to send or stop sending the local video stream:
  • true: Stop sending the local video stream.
  • false: (Default) Send the local video stream.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ muteAllRemoteAudioStreams()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.muteAllRemoteAudioStreams ( boolean  muted)

Stops or resumes receiving all remote audio streams.

This method works for all remote users that join or will join a channel using the joinChannel method. It is equivalent to the autoSubscribeAudio member in the ChannelMediaOptions class. You can call this method before, during, or after a call.

  • If you call muteAllRemoteAudioStreams(true) before joining a channel, the local user does not receive any audio stream after joining the channel.
  • If you call muteAllRemoteAudioStreams(true) after joining a channel, the local use stops receiving any audio stream from any user in the channel, including any user who joins the channel after you call this method.
  • If you call muteAllRemoteAudioStreams(true) after leaving a channel, the local user does not receive any audio stream the next time the user joins a channel.

After you successfully call muteAllRemoteAudioStreams(true), you can take the following actions:

  • To resume receiving all remote audio streams, call muteAllRemoteAudioStreams(false).
  • To resume receiving the audio stream of a specified user, call muteRemoteAudioStream(uid, false), where uid is the ID of the user whose audio stream you want to resume receiving.
Note
  • The result of calling this method is affected by calling enableAudio and disableAudio. Settings in muteAllRemoteAudioStreams stop taking effect if either of the following occurs:
    • Calling enableAudio after muteAllRemoteAudioStreams(true).
    • Calling disableAudio after muteAllRemoteAudioStreams(false).
  • This method only works for the channel created by calling joinChannel. To set whether to receive remote audio streams for a specific channel, Agora recommends using autoSubscribeAudio in the ChannelMediaOptions class.
Parameters
mutedWhether to stop receiving remote audio streams:
  • true: Stop receiving any remote audio stream.
  • false: (Default) Resume receiving all remote audio streams.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setDefaultMuteAllRemoteAudioStreams()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setDefaultMuteAllRemoteAudioStreams ( boolean  muted)

Determines whether to receive all remote audio streams by default.

Deprecated:
This method is deprecated. To set whether to receive remote audio streams by default, call muteAllRemoteAudioStreams before calling joinChannel.

Use setDefaultMuteAllRemoteAudioStreams to set whether to receive audio streams of subsequent peer users. Agora recommends calling it before joining a channel.

A successful call of setDefaultMuteAllRemoteAudioStreams(true) results in that the local user not receiving any audio stream after joining a channel.

Parameters
mutedWhether to receive remote audio streams by default:
  • true: Do not receive any remote audio stream by default.
  • false: (Default)) Receive remote audio streams by default.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ muteAllRemoteVideoStreams()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.muteAllRemoteVideoStreams ( boolean  muted)

Stops or resumes receiving all remote video streams.

This method works for all remote users that join or will join a channel using the joinChannel method. It is equivalent to the autoSubscribeVideo member in the ChannelMediaOptions class. You can call this method before, during, or after a call.

  • If you call muteAllRemoteVideoStreams(true) before joining a channel, the local user does not receive any video stream after joining the channel.
  • If you call muteAllRemoteVideoStreams(true) after joining a channel, the local use stops receiving any video stream from any user in the channel, including any user who joins the channel after you call this method.
  • If you call muteAllRemoteVideoStreams(true) after leaving a channel, the local user does not receive any video stream the next time the user joins a channel.

After you successfully call muteAllRemoteVideoStreams(true), you can take the following actions:

  • To resume receiving all remote video streams, call muteAllRemoteVideoStreams(false).
  • To resume receiving the video stream of a specified user, call muteRemoteVideoStream(uid, false), where uid is the ID of the user whose video stream you want to resume receiving.
Note
  • The result of calling this method is affected by calling enableVideo and disableVideo. Settings in muteAllRemoteVideoStreams stop taking effect if either of the following occurs:
    • Calling enableVideo after muteAllRemoteVideoStreams(true).
    • Calling disableVideo after muteAllRemoteVideoStreams(false).
  • This method only works for the channel created by calling joinChannel. To set whether to receive remote audio streams for a specific channel, Agora recommends using autoSubscribeVideo in the ChannelMediaOptions class.
Parameters
mutedWhether to stop receiving remote video streams:
  • true: Stop receiving any remote video stream.
  • false: (Default) RResume receiving all remote video streams.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setDefaultMuteAllRemoteVideoStreams()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setDefaultMuteAllRemoteVideoStreams ( boolean  muted)

Determines whether to receive all remote video streams by default.

Deprecated:
This method is deprecated. To set whether to receive remote video streams by default, call muteAllRemoteVideoStreams before calling joinChannel.

Use setDefaultMuteAllRemoteVideoStreams to set whether to receive video streams of subsequent peer users. Agora recommends calling it before joining a channel.

A successful call of setDefaultMuteAllRemoteVideoStreams(true) results in that the local user not receiving any video stream after joining a channel.

Parameters
mutedWhether to receive remote video streams by default:
  • true: Do not receive any remote video stream by default.
  • false: (Default) Receive remote video streams by default.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ muteRemoteAudioStream()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.muteRemoteAudioStream ( int  userId,
boolean  muted 
)

Stops or resumes receiving the audio stream of a specified user.

You can call this method before or after joining a channel. If a user leaves a channel, the settings in this method become invalid.

Parameters
userIdThe ID of the specified user.
muteWhether to stop receiving the audio stream of the specified user:
  • true: Stop receiving the specified audio stream.
  • false: (Default) Receive the specified audio stream.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ muteRemoteAudioStreamEx()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.muteRemoteAudioStreamEx ( int  uid,
boolean  muted,
RtcConnection  connection 
)

Stops or resumes receiving the audio stream of a specified user with specified connection.

Note
Once you leave the channel, the settings in this method becomes invalid.
Parameters
uidID of the specified remote user.
muteDetermines whether to receive or stop receiving the specified audio stream:
  • true: Stop receiving the specified audio stream.
  • false: (Default) Receive the specified audio stream.
connectionAn output parameter which is used to control different connection instances.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngineEx.

◆ muteRemoteVideoStream()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.muteRemoteVideoStream ( int  userId,
boolean  muted 
)

Stops or resumes receiving the video stream of a specified user.

You can call this method before or after joining a channel. If a user leaves a channel, the settings in this method become invalid.

Parameters
userIdThe ID of the specified user.
muteWhether to stop receiving the video stream of the specified user:
  • true: Stop receiving the video stream of the specified user.
  • false: (Default) Resume receiving the video stream of the specified user.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ muteRemoteVideoStreamEx()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.muteRemoteVideoStreamEx ( int  uid,
boolean  muted,
RtcConnection  connection 
)

Stops or resumes receiving the video stream of a specified user with specified connection.

Note
Once you leave the channel, the settings in this method becomes invalid.
Parameters
uidID of the specified remote user.
mutedDetermines whether to receive or stop receiving a specified video stream:
  • true: Stop receiving the specified video stream.
  • false: (Default) Receive the specified video stream.
connectionAn output parameter which is used to control different connection instances.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngineEx.

◆ renewToken()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.renewToken ( String  token)

Renews the token.

Once a token is enabled and used, it expires after a certain period of time.

Under the following circumstances, generate a new token on your server, and then call this method to renew it. Failure to do so results in the SDK disconnecting from the server.

Parameters
tokenThe new token.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setDefaultAudioRoutetoSpeakerphone()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setDefaultAudioRoutetoSpeakerphone ( boolean  defaultToSpeaker)

Sets the default audio route.

Most mobile phones have two audio routes: an earpiece at the top, and a speakerphone at the bottom. The earpiece plays at a lower volume, and the speakerphone at a higher volume.

When setting the default audio route, you determine whether audio playback comes through the earpiece or speakerphone when no external audio device is connected.

Depending on the scenario, Agora uses different default audio routes:

  • Voice call: Earpiece.
  • Video call: Speakerphone.
  • Audio broadcast: Speakerphone.
  • Video broadcast: Speakerphone.

Call this method before, during, or after a call, to change the default audio route. When the audio route changes, the SDK triggers the onAudioRouteChanged callback.

Note
The system audio route changes when an external audio device, such as a headphone or a Bluetooth audio device, is connected. See Principles for Changing the Audio Route.
Parameters
defaultToSpeakerWhether to set the speakerphone as the default audio route:
  • true: Set the speakerphone as the default audio route.
  • false: Do not set the speakerphone as the default audio route.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setEnableSpeakerphone()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setEnableSpeakerphone ( boolean  enabled)

◆ isSpeakerphoneEnabled()

synchronized boolean io.agora.rtc2.internal.RtcEngineImpl.isSpeakerphoneEnabled ( )

Checks whether the speakerphone is enabled.

Returns
  • true: The speakerphone is enabled, and the audio plays from the speakerphone.
  • false: The speakerphone is not enabled, and the audio plays from devices other than the speakerphone. For example, the headset or earpiece.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ startRecordingService()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.startRecordingService ( String  recordingKey)

Starts the recording service.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ stopRecordingService()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.stopRecordingService ( String  recordingKey)

Stops the recording service.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ refreshRecordingServiceStatus()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.refreshRecordingServiceStatus ( )

Refreshes the server recording service status.

Returns
  • 0: Success.
  • <0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ adjustRecordingSignalVolume()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.adjustRecordingSignalVolume ( int  volume)

Adjusts the recording volume.

Parameters
volumeRecording volume, ranges from 0 to 400:
  • 0: Mute
  • 100: Original volume
  • 400: (Maximum) Four times the original volume with signal clipping protection
Returns
  • 0: Success.
  • <0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ adjustPlaybackSignalVolume()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.adjustPlaybackSignalVolume ( int  volume)

Adjusts the playback volume.

Parameters
volumePlayback volume, ranges from 0 to 400:
  • 0: Mute
  • 100: Original volume
  • 400: (Maximum) Four times the original volume with signal clipping protection
Returns
  • 0: Success.
  • <0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ adjustUserPlaybackSignalVolume()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.adjustUserPlaybackSignalVolume ( int  uid,
int  volume 
)

Adjust the playback volume of the user specified by uid.

You can call this method to adjust the playback volume of the user specified by uid in call. If you want to adjust playback volume of the multi user, you can call this this method multi times.

Note
Please call this method after join channel. This method adjust the playback volume of specified user.
Parameters
uidRemote user ID。
volumeThe playback volume, range is [0,100]: 0: mute, 100: The original volume
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setRecordingAudioFrameParameters()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setRecordingAudioFrameParameters ( int  sampleRate,
int  channel,
int  mode,
int  samplesPerCall 
)

Sets the audio recording format for the onRecordAudioFrame callback.

Parameters
sampleRateSets the sample rate (samplesPerSec) returned in the onRecordAudioFrame callback, which can be set as 8000, 16000, 32000, 44100, or 48000 Hz.
channelSets the number of audio channels (channels) returned in the onRecordAudioFrame callback:
  • 1: Mono.
  • 2: Stereo.
modeSets the use mode of the onRecordAudioFrame callback:
  • RAW_AUDIO_FRAME_OP_MODE_READ_ONLY(0): Read-only mode: Users only read the audio data without modifying anything. For example, when users acquire the data with the Agora SDK then push the RTMP streams.
  • RAW_AUDIO_FRAME_OP_MODE_WRITE_ONLY(1): Write-only mode: Users replace the audio data with their own data and pass the data to the SDK for encoding. For example, when users acquire the data.
  • RAW_AUDIO_FRAME_OP_MODE_READ_WRITE(2): Read and write mode: Users read the data from AudioFrame, modify it, and then play it. For example, when users have their own sound-effect processing module and perform some voice pre-processing, such as a voice change.
samplesPerCallSets the number of samples the onRecordAudioFrame callback returns. In RTMP streaming scenarios, set it as 1024.
Returns
  • 0: Success.
  • < 0: Failure.
Note
The SDK calculates the sample interval according to the value of the sampleRate, channel, and samplesPerCall parameters you set in this method. Sample interval (s) = samplePerCall/(sampleRate × channel). Ensure that the value of sample interval ≥ 0.01. The SDK triggers the onRecordAudioFrame callback according to the sample interval.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setPlaybackAudioFrameParameters()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setPlaybackAudioFrameParameters ( int  sampleRate,
int  channel,
int  mode,
int  samplesPerCall 
)

Sets the audio recording format for the onPlaybackAudioFrame callback.

Parameters
sampleRateSets the sample rate (samplesPerSec) returned in the onPlaybackAudioFrame callback, which can be set as 8000, 16000, 32000, 44100, or 48000 Hz.
channelSets the number of audio channels (channels) returned in the onPlaybackAudioFrame callback:
  • 1: Mono.
  • 2: Stereo.
modeSets the use mode of the onPlaybackAudioFrame callback:
  • RAW_AUDIO_FRAME_OP_MODE_READ_ONLY(0): Read-only mode: Users only read the audio data without modifying anything. For example, when users acquire the data with the Agora SDK then push the RTMP streams.
  • RAW_AUDIO_FRAME_OP_MODE_WRITE_ONLY(1): Write-only mode: Users replace the audio data with their own data and pass the data to the SDK for encoding. For example, when users acquire the data.
  • RAW_AUDIO_FRAME_OP_MODE_READ_WRITE(2): Read and write mode: Users read the data from AudioFrame, modify it, and then play it. For example, when users have their own sound-effect processing module and perform some voice pre-processing, such as a voice change.
samplesPerCallSets the number of samples the onPlaybackAudioFrame callback returns. In RTMP streaming scenarios, set it as 1024.
Returns
  • 0: Success.
  • < 0: Failure.
Note
The SDK calculates the sample interval according to the value of the sampleRate, channel, and samplesPerCall parameters you set in this method. Sample interval (s) = samplePerCall/(sampleRate × channel). Ensure that the value of sample interval ≥ 0.01. The SDK triggers the onPlaybackAudioFrame callback according to the sample interval.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setMixedAudioFrameParameters()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setMixedAudioFrameParameters ( int  sampleRate,
int  channel,
int  samplesPerCall 
)

Sets the mixed audio format for the onMixedAudioFrame callback.

Parameters
sampleRateSets the sample rate (samplesPerSec) returned in the onMixedAudioFrame callback, which can be set as 8000, 16000, 32000, 44100, or 48000 Hz.
channelSets the number of audio channels (channels) returned in the onPlaybackAudioFrame callback:
  • 1: Mono.
  • 2: Stereo.
samplesPerCallSets the number of samples the onMixedAudioFrame callback returns. In RTMP streaming scenarios, set it as 1024.
Returns
  • 0: Success.
  • < 0: Failure.
Note
The SDK calculates the sample interval according to the value of the sampleRate and samplesPerCall parameters you set in this method. Sample interval (s) = samplePerCall/(sampleRate × channel). Ensure that the value of sample interval ≥ 0.01. The SDK triggers the onMixedAudioFrame callback according to the sample interval.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setPlaybackAudioFrameBeforeMixingParameters()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setPlaybackAudioFrameBeforeMixingParameters ( int  sampleRate,
int  channel 
)

Sets the audio playback format before mixing for the onPlaybackAudioFrameBeforeMixing callback.

Parameters
sampleRateSets the sample rate (samplesPerSec) returned in the onPlaybackAudioFrameBeforeMixing callback, which can be set as 8000, 16000, 32000, 44100, or 48000 Hz.
channelNumber of channels of the audio data returned in onPlaybackAudioFrameBeforeMixing, which can be set as 1 or 2:
  • 1: Mono
  • 2: Stereo
Returns
  • 0: Success.
  • < 0: Failure.
Note
The SDK calculates the sample interval according to the value of the sampleRate and channel parameters you set in this method. Ensure that the value of sample interval ≥ 0.01. The SDK triggers the onPlaybackAudioFrameBeforeMixing callback according to the sample interval.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ registerAudioFrameObserver()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.registerAudioFrameObserver ( IAudioFrameObserver  observer)

Registers an audio frame observer object.

Note
Call this method before calling joinChannel.
Parameters
observerThe IAudioFrameObserver interface, null means unregistering observer instead.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setHighQualityAudioParameters()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setHighQualityAudioParameters ( boolean  fullband,
boolean  stereo,
boolean  fullBitrate 
)

Sets high-quality audio preferences.

Call this method and set all the modes before joining a channel. Do NOT call this method again after joining a channel.

Note: Agora does not recommend using this method. If you want to set the audio profile, see setAudioProfile.

Parameters
fullbandFull-band codec (48 kHz sampling rate), not compatible with versions before v1.7.4.
  • True: Enable full-band codec.
  • False: Disable full-band codec.
stereoStereo codec, not compatible with versions before v1.7.4.
  • True: Enable stereo codec.
  • False: Disable stereo codec.
fullBitrateHigh bitrate. Recommended in voice-only mode.
  • True: Enable high bitrate mode.
  • False: Disable high bitrate mode.
Returns
  • 0: Success.
  • <0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ enableInEarMonitoring() [1/2]

synchronized int io.agora.rtc2.internal.RtcEngineImpl.enableInEarMonitoring ( boolean  enabled,
int  includeAudioFilters 
)

Enables in-ear monitoring.

Parameters
enabledDetermines whether to enable in-ear monitoring.
  • true: Enable in ear monitoring.
  • false: Disable in ear monitoring.
includeAudioFiltersThe type of the ear monitoring
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ enableInEarMonitoring() [2/2]

synchronized int io.agora.rtc2.internal.RtcEngineImpl.enableInEarMonitoring ( boolean  enabled)

Enables in-ear monitoring.

Parameters
enabledDetermines whether to enable in-ear monitoring.
  • true: Enable in-ear monitoring.
  • false: Disable in-ear monitoring.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ enableWebSdkInteroperability()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.enableWebSdkInteroperability ( boolean  enabled)

Enables interoperability with the Agora Web SDK (Live Broadcast only).

Use this method when the channel profile is Live Broadcast. Interoperability with the Agora Web SDK is enabled by default when the channel profile is Communication.

Parameters
enabledDetermines whether to enable interoperability with the Agora Web SDK.
  • true: Enable interoperability with the Agora Native SDK.
  • false: Disable interoperability with the Agora Native SDK。
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setVideoQualityParameters()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setVideoQualityParameters ( boolean  preferFrameRateOverImageQuality)

Sets the video quality preferences.

Parameters
preferFrameRateOverImageQualityThe video preference to be set:
  • True: Frame rate over image quality
  • False: Image quality over frame rate (default)
Returns
  • 0: Success.
  • <0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ enableAudioVolumeIndication()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.enableAudioVolumeIndication ( int  interval,
int  smooth 
)

Enables the onAudioVolumeIndication callback to report on which users are speaking and the speakers' volume.

Once the onAudioVolumeIndication callback is enabled, the SDK returns the volume indication in the at the time interval set in enableAudioVolumeIndication, regardless of whether any user is speaking in the channel.

Parameters
intervalSets the time interval between two consecutive volume indications:
  • ≤ 0: Disables the volume indication.
  • > 0: Time interval (ms) between two consecutive volume indications, and should be integral multiple of 200 (less than 200 will be set to 200).
smoothThe smoothing factor that sets the sensitivity of the audio volume indicator. The value ranges is [0, 10]. The greater the value, the more sensitive the indicator. The recommended value is 3.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ enableAudioQualityIndication()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.enableAudioQualityIndication ( boolean  enabled)

Enables the audio quality notification callbacks.

The onAudioQuality callback triggers periodically after this callback is enabled.

Parameters
enabledWhether to enable the audio quality notification callbacks. True/False.
Returns
  • 0: Success.
  • <0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setVideoProfile() [1/2]

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setVideoProfile ( int  profile,
boolean  swapWidthAndHeight 
)

Sets the video encoding profile.

Each profile includes a set of parameters, such as the resolution, frame rate, and bitrate. When the camera does not support the specified resolution, the SDK chooses a suitable camera resolution, while the encoder resolution is the one specified by setVideoProfile.

Note:

Parameters
profileVideoProfile.
swapWidthAndHeightThe width and height of the output video is consistent with that of the video profile you set. This parameter sets whether to swap the width and height of the stream:
  • True: Swap the width and height. After that the video will be in the portrait mode, that is, width < height.
  • False: (Default) Do not swap the width and height, and the video remains in the landscape mode, that is, width > height.
Returns
  • 0: Success.
  • <0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setVideoProfile() [2/2]

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setVideoProfile ( int  width,
int  height,
int  frameRate,
int  bitrate 
)

Sets the width, height, frame rate, and bitrate of the video manually if setting the video resolution does not meet your needs.

Note: For example, the resolution is 320 x 240 and the frame rate is 15 fps, then the bitrate is 200:

  • If the frame rate is 5 fps, the bitrate is 100.
  • If the frame rate is 30 fps, the bitrate is 300.
Parameters
widthWidth of the video that you want to set. Maximum is 1280.
heightHeight of the video that you want to set. Maximum is 720.
frameRateFrame rate of the video that you want to set. The highest value is 30. You can set it to 5, 10, 15, 24, 30, and so on.
bitrateBitrate of the video that you want to set. You need to manually work out the bitrate according to the width, height, and frame rate. With the same width and height, the bitrate varies with the change of the frame rate:
  • If the frame rate is 5 fps, divide the recommended bitrate by 2.
  • If the frame rate is 15 fps, use the recommended bitrate.
  • If the frame rate is 30 fps, multiply the recommended bitrate by 1.5.
  • Calculate your bitrate with the ratio if you choose other frame rates.
If the bitrate you set is beyond the proper range, the SDK will automatically adjust it to a value within the range.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setVideoEncoderConfiguration()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setVideoEncoderConfiguration ( VideoEncoderConfiguration  config)

Sets the video encoder configuration.

Each configuration profile corresponds to a set of video parameters, including the resolution, frame rate, and bitrate.

The parameters specified in this method are the maximum values under ideal network conditions. If the video engine cannot render the video using the specified parameters due to poor network conditions, the parameters further down the list are considered until a successful configuration is found.

Parameters
configThe local video encoder configuration: VideoEncoderConfiguration.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setVideoEncoderConfigurationEx()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setVideoEncoderConfigurationEx ( VideoEncoderConfiguration  config,
RtcConnection  connection 
)

Sets the video encoder configuration with specified connection.

Each configuration profile corresponds to a set of video parameters, including the resolution, frame rate, and bitrate.

The parameters specified in this method are the maximum values under ideal network conditions. If the video engine cannot render the video using the specified parameters due to poor network conditions, the parameters further down the list are considered until a successful configuration is found.

Parameters
configThe local video encoder configuration: VideoEncoderConfiguration.
connectionAn output parameter which is used to control different connection instances.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngineEx.

◆ setAudioProfile() [1/2]

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setAudioProfile ( int  profile,
int  scenario 
)

Sets the audio parameters and application scenarios.

Deprecated:
This method is deprecated. You can use the { setAudioProfile(int profile)} method instead. To set the audio scenario, call RtcEngine#create(RtcEngineConfig config) create2} and pass value in the mAudioScenario member.
Note
  • Call this method before calling joinChannel.
  • In scenarios requiring high-quality audio, we recommend setting profile as MUSIC_HIGH_QUALITY(4) and scenario as AUDIO_SCENARIO_GAME_STREAMING(3).
Parameters
profileSets the sample rate, bitrate, encoding mode, and the number of channels. See AudioProfile.
scenarioSets the audio application scenarios. See AudioScenario.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setAudioProfile() [2/2]

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setAudioProfile ( int  profile)

Sets the audio profile.

Note
  • Call this method before calling joinChannel method.
  • In scenarios requiring high-quality audio, Agora recommends setting profile as MUSIC_HIGH_QUALITY(4).
  • To set the audio scenario, call create2 and pass value in the mAudioScenario member.
Parameters
profileSets the sample rate, bitrate, encoding mode, and the number of channels. See AudioProfile.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ monitorAudioRouteChange()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.monitorAudioRouteChange ( boolean  isMonitoring)

Enables the audio routing monitoring by the SDK.

Call before joining a channel.

Parameters
isMonitoringDefault value is true
Returns

Reimplemented from io.agora.rtc2.RtcEngineInternal.

◆ switchCamera()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.switchCamera ( )

Switches between front and rear cameras.

Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ isCameraZoomSupported()

synchronized boolean io.agora.rtc2.internal.RtcEngineImpl.isCameraZoomSupported ( )

Checks whether the camera zoom function is supported.

Returns
  • true: The camera zoom function is supported.
  • false: The camera zoom function is not supported.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ isCameraTorchSupported()

synchronized boolean io.agora.rtc2.internal.RtcEngineImpl.isCameraTorchSupported ( )

Checks whether the camera flash function is supported.

Returns
  • true: The camera flash function is supported.
  • false: The camera flash function is not supported.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ isCameraFocusSupported()

synchronized boolean io.agora.rtc2.internal.RtcEngineImpl.isCameraFocusSupported ( )

Checks whether the camera manual focus function is supported.

Returns
  • true: The camera manual focus function is supported.
  • false: The camera manual focus function is not supported.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ isCameraAutoFocusFaceModeSupported()

synchronized boolean io.agora.rtc2.internal.RtcEngineImpl.isCameraAutoFocusFaceModeSupported ( )

Checks whether the camera auto focus function is supported.

Returns
  • true: The camera auto focus function is supported.
  • false: The camera auto focus function is not supported.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setCameraZoomFactor()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setCameraZoomFactor ( float  factor)

Sets the camera zoom ratio.

Parameters
factorThe camera zoom factor. It ranges from 1.0 to the maximum zoom supported by the camera.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ getCameraMaxZoomFactor()

synchronized float io.agora.rtc2.internal.RtcEngineImpl.getCameraMaxZoomFactor ( )

Gets the maximum zoom ratio supported by the camera.

Returns
The maximum zoom ratio supported by the camera.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setCameraFocusPositionInPreview()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setCameraFocusPositionInPreview ( float  positionX,
float  positionY 
)

Sets the manual focus position.

Parameters
positionXThe horizontal coordinate of the touch point in the view.
positionYThe vertical coordinate of the touch point in the view.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setCameraTorchOn()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setCameraTorchOn ( boolean  isOn)

Enables the camera flash.

Parameters
isOnDetermines whether to enable the camera flash.
  • true: Enable the flash.
  • false: Do not enable the flash.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setCameraAutoFocusFaceModeEnabled()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setCameraAutoFocusFaceModeEnabled ( boolean  enabled)

Enables the camera auto focus face function.

Parameters
enabledDetermines whether to enable the camera auto focus face mode.
  • true: Enable the auto focus face function.
  • false: Do not enable the auto focus face function.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setCameraCapturerConfiguration()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setCameraCapturerConfiguration ( CameraCapturerConfiguration  config)

◆ sendCustomReportMessage()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.sendCustomReportMessage ( String  id,
String  category,
String  event,
String  label,
int  value 
)

Agora supports reporting and analyzing customized messages.

This function is in the beta stage with a free trial. The ability provided in its beta test version is reporting a maximum of 10 message pieces within 6 seconds, with each message piece not exceeding 256 bytes.

To try out this function, contact support@agora.io and discuss the format of customized messages with us.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ sendCustomReportMessageEx()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.sendCustomReportMessageEx ( String  id,
String  category,
String  event,
String  label,
int  value,
RtcConnection  connection 
)

Report custom event to argus.

Parameters
idCustom Event ID
categoryCustom Event category
eventCustom Event to report
labelCustom Event label
valueCustom Event value
connectionThe connection ID.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngineEx.

◆ createMediaPlayer()

synchronized IMediaPlayer io.agora.rtc2.internal.RtcEngineImpl.createMediaPlayer ( )

Create a media player

You can use this function to create a ffmpeg or simple media player

Returns
IMediaPlayer

Reimplemented from io.agora.rtc2.RtcEngine.

◆ enableRemoteVideo()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.enableRemoteVideo ( boolean  enabled,
int  uid 
)

enable/disable remote video

Parameters
enabledtrue, start receiving and rendering remote video; false, stop receiving and rendering remote video
uidremote user id to enable/disable

◆ startAudioRecording() [1/2]

synchronized int io.agora.rtc2.internal.RtcEngineImpl.startAudioRecording ( String  filePath,
int  quality 
)

Starts an audio recording.

The SDK allows recording during a call, which supports either one of the following formats:

  • .wav: Large file size with high sound fidelity
  • .aac: Small file size with low sound fidelity

Ensure that the directory to save the recording file exists and is writable. This method is usually called after the token, java.lang.String channelName, java.lang.String optionalInfo, int optionalUid) joinChannel method. The recording automatically stops when the leaveChannel method is called.

Parameters
filePathFull file path of the recording file. The string of the file name is in UTF-8 code.
qualityAudio recording quality:
Returns
  • 0: Success.
  • <0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ startAudioRecording() [2/2]

synchronized int io.agora.rtc2.internal.RtcEngineImpl.startAudioRecording ( AudioFileRecordingConfig  config)

Starts an audio recording.

The SDK allows recording during a call, which supports either one of the following formats:

  • .wav: Large file size with high sound fidelity
  • .aac: Small file size with low sound fidelity

Ensure that the directory to save the recording file exists and is writable. This method is usually called after the token, java.lang.String channelName, java.lang.String optionalInfo, int optionalUid) joinChannel method. The recording automatically stops when the leaveChannel method is called.

Parameters
configaudio file recording config
Returns
  • 0: Success.
  • <0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ stopAudioRecording()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.stopAudioRecording ( )

Stops the audio recording on the client.

Note: Call this method before calling leaveChannel, otherwise the recording automatically stops when the leaveChannel method is called.

Returns
  • 0: Success.
  • <0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ startPlayingStream()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.startPlayingStream ( String  url)

Starts playing the imported stream from the URL.

Parameters
urlURL of the imported stream to play.
Returns
  • 0: Success.
  • <0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ stopPlayingStream()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.stopPlayingStream ( )

Stops playing the imported stream.

Returns
  • 0: Success.
  • <0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ startAudioMixing()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.startAudioMixing ( String  filePath,
boolean  loopback,
boolean  replace,
int  cycle 
)

Starts playing and mixing the music file.

This method mixes the specified local or online audio file with the audio stream from the microphone, or replaces the microphone’s audio stream with the specified local or remote audio file.

You can choose whether the other user can hear the local audio playback and specify the number of playback loops.

A successful startAudioMixing method call triggers the {onAudioMixingStateChanged}(AUDIO_MIXING_STATE_PLAYING) callback on the local client. When the audio mixing file playback finishes, the SDK triggers the { IRtcEngineEventHandler#onAudioMixingStateChanged onAudioMixingStateChanged}(AUDIO_MIXING_STATE_STOPPED) callback on the local client. filePath Specifies the absolute path (including the suffixes of the filename) of the local or online audio file to be mixed. For example, /sdcard/emulated/0/audio.mp4. Supported audio formats: mp3, mp4, m4a, aac, 3gp, mkv, and wav.If the path begins with /assets/, the audio file is in the /assets/ directory.Otherwise, the audio file is in the absolute path. loopback Sets which user can hear the audio mixing:true: Only the local user can hear the audio mixing.false: Both users can hear the audio mixing. replace Sets the audio mixing content:true: Only publish the specified audio file; the audio stream from the microphone is not published.false: The local audio file is mixed with the audio stream from the microphone. cycle Sets the number of playback loops:Positive integer: Number of playback loops.-1: Infinite playback loops. To use this method, ensure that the Android device is v4.2 or later, and the API version is v16 or later.Call this method when you are in the channel, otherwise it may cause issues.If you want to play an online music file, ensure that the time interval between calling this method is more than 100 ms, or the AUDIO_FILE_OPEN_TOO_FREQUENT(702) warning occurs.If you want to play an online music file, Agora does not recommend using the redirected URL address. Some Android devices may fail to open a redirected URL address.If you call this method on an emulator, only the MP3 file format is supported. 0: Success.< 0: Failure. Constants#WARN_AUDIO_MIXING_OPEN_ERROR WARN_AUDIO_MIXING_OPEN_ERROR (701)}: If the local audio file does not exist, or the online audio packet is not received within five seconds after it is opened, the SDK assumes that the media file cannot be used and returns this warning.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ stopAudioMixing()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.stopAudioMixing ( )

Stops playing or mixing the music file.

Call this method when you are in a channel.

Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ pauseAudioMixing()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.pauseAudioMixing ( )

Pauses playing and mixing the music file.

Call this method when you are in a channel.

Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ resumeAudioMixing()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.resumeAudioMixing ( )

Resumes playing and mixing the music file.

Call this method when you are in a channel.

Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ adjustAudioMixingVolume()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.adjustAudioMixingVolume ( int  volume)

Adjusts the volume of audio mixing.

Call this method when you are in a channel.

Note
Calling this method does not affect the volume of the audio effect file playback invoked by the  playEffect method.
Parameters
volumeAudio mixing volume. The value ranges between 0 and 100 (default).
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ adjustAudioMixingPublishVolume()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.adjustAudioMixingPublishVolume ( int  volume)

Adjusts the audio mixing volume for publishing (for remote users).

Note
Call this method when you are in a channel.
Parameters
volumeAudio mixing volume for publishing. The value ranges between 0 and 100 (default).
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ getAudioMixingPublishVolume()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.getAudioMixingPublishVolume ( )

Retrieves the audio mixing volume for publishing. This method helps troubleshoot audio volume related issues.

Note
Call this method when you are in a channel.
Returns
  • ≥ 0: The audio mixing volume for publishing, if this method call succeeds. The value range is [0,100].
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ adjustAudioMixingPlayoutVolume()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.adjustAudioMixingPlayoutVolume ( int  volume)

Adjusts the audio mixing volume for local playback.

Note
Call this method when you are in a channel.
Parameters
volumeAudio mixing volume for local playback. The value ranges between 0 and 100 (default).
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ getAudioMixingPlayoutVolume()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.getAudioMixingPlayoutVolume ( )

Retrieves the audio mixing volume for local playback. This method helps troubleshoot audio volume related issues.

Note
Call this method when you are in a channel.
Returns
  • ≥ 0: The audio mixing volume, if this method call succeeds. The value range is [0,100].
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ getAudioMixingDuration()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.getAudioMixingDuration ( )

Gets the duration (ms) of the music file.

Call this method when you are in a channel.

Returns
  • Returns the audio mixing duration, if the method call is successful.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ getAudioMixingCurrentPosition()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.getAudioMixingCurrentPosition ( )

Gets the playback position (ms) of the music file.

Call this method when you are in a channel.

Returns
  • Returns the current playback position of the audio mixing, if the method call is successful.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setAudioMixingPosition()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setAudioMixingPosition ( int  pos)

Sets the playback position (ms) of the music file to a different starting position (the default plays from the beginning).

Parameters
posThe playback starting position (ms) of the audio mixing file.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ useExternalAudioDevice()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.useExternalAudioDevice ( )

Use the external audio device.

Returns
  • 0: Success.
  • <0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setExternalAudioSource() [1/2]

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setExternalAudioSource ( boolean  enabled,
int  sampleRate,
int  channels 
)

Sets the external audio source.

Note
Ensure that you call this method before calling joinChannel.
Parameters
enabledDetermines whether to enable the external audio source:
  • true: Enable the external audio source.
  • false: (default) Disable the external audio source.
sampleRateThe Sample rate (Hz) of the external audio source, which can set be as 8000, 16000, 32000, 44100, or 48000.
channelsThe number of channels of the external audio source, which can be set as 1 or 2:
  • 1: Mono.
  • 2: Stereo.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setExternalAudioSource() [2/2]

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setExternalAudioSource ( boolean  enabled,
int  sampleRate,
int  channels,
int  sourceNumber,
boolean  localPlayback,
boolean  publish 
)

Sets the external audio source.

Note
Ensure that you call this method before joinChannel.
Parameters
enabledDetermines whether to enable the external audio source:
  • true: Enable the external audio source.
  • false: (default) Disable the external audio source.
sampleRateThe Sample rate (Hz) of the external audio source, which can set be as 8000, 16000, 32000, 44100, or 48000.
channelsThe number of channels of the external audio source, which can be set as 1 or 2:
  • 1: Mono.
  • 2: Stereo.
sourceNumberThe number of audio source per channel.
  • 1: Mono.
  • 2: Stereo.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ pushExternalAudioFrame() [1/2]

synchronized int io.agora.rtc2.internal.RtcEngineImpl.pushExternalAudioFrame ( byte[]  data,
long  timestamp 
)

Pushes the external audio data to the app.

Parameters
dataThe audio buffer data.
timestampThe timestamp of the audio data.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ pushExternalAudioFrame() [2/2]

synchronized int io.agora.rtc2.internal.RtcEngineImpl.pushExternalAudioFrame ( ByteBuffer  data,
long  timestamp,
int  sourceId 
)

Pushes the external audio data to the app.

Parameters
dataThe audio buffer data.
timestampThe timestamp of the audio data.
sourceIdThe audio track ID.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ pushExternalAudioFrameEx()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.pushExternalAudioFrameEx ( ByteBuffer  data,
long  timestamp,
int  sourceId,
RtcConnection  connection 
)

Pushes the external audio data to the app with specified connection.

Parameters
dataThe audio buffer data.
timestampThe timestamp of the audio data.
sourceIdThe audio track ID.
connectionAn output parameter which is used to control different connection instances.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngineEx.

◆ setExternalAudioSink()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setExternalAudioSink ( int  sampleRate,
int  channels 
)

Sets the external audio sink.

This method applies to scenarios where you want to use external audio data for playback. After calling the RtcEngine#create(RtcEngineConfig) method and pass value of false in the enableAudioDevice member in the RtcEngineConfig#mEnableAudioDevice, you can call the pullPlaybackAudioFrame method to pull the remote audio data, process it, and play it with the audio effects that you want.

Ensure that you call this method before joining a channel.

Note
Once you call the RtcEngine#create(RtcEngineConfig) method and pass value of false in the enableAudioDevice member in the RtcEngineConfig#mEnableAudioDevice, the app will not retrieve any audio data from the {int, int, int, int, ByteBuffer, long, int)} onPlaybackFrame} callback. sampleRate The sample rate (Hz) of the external audio sink. You can set this parameter as 16000, 32000, 44100, or 48000. channels The number of audio channels of the external audio sink:1: Mono.2: Stereo. 0: Success.< 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ pullPlaybackAudioFrame() [1/2]

synchronized int io.agora.rtc2.internal.RtcEngineImpl.pullPlaybackAudioFrame ( byte[]  data,
int  lengthInByte 
)

Pulls the remote audio frame.

Before calling this method, call the RtcEngine#create(RtcEngineConfig) method and pass value of false in the enableAudioDevice member in the {}, and call the RtcEngine#setExternalAudioSink(int, int)} method to enable and set the external audio sink. Ensure that you call this method after joining a channel. After a successful method call, the app pulls the decoded and mixed audio data for playback. Once you call the pullPlaybackAudioFrame method successfully, the app will not retrieve any audio data from the io.agora.rtc2.IAudioFrameObserver#onPlaybackAudioFrame(int, int, int, int, int, ByteBuffer, long, int)} onPlaybackFrame} callback.The difference between the onPlaybackFrame callback and the pullPlaybackAudioFrame method is as follows:onPlaybackFrame: The SDK sends the audio data to the app through this callback. Any delay in processing the audio frames may result in audio jitter.pullPlaybackAudioFrame: The app pulls the remote audio data. After setting the audio data parameters, the SDK adjusts the frame buffer and avoids problems caused by jitter in the external audio playback. data The audio data that you want to pull. The data format is in byte[]. lengthInByte The data length (byte) of the external audio data. The value of this parameter is related to the audio duration, and the values of the sampleRate and channels parameters that you set in RtcEngine#setExternalAudioSink setExternalAudioSink}. Agora recommends setting the audio duration no shorter than 10 ms. The formula for lengthInByte is: lengthInByte = sampleRate/1000 × 2 × channels × audio duration (ms).

Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ pullPlaybackAudioFrame() [2/2]

synchronized int io.agora.rtc2.internal.RtcEngineImpl.pullPlaybackAudioFrame ( ByteBuffer  data,
int  lengthInByte 
)

Pulls the remote audio frame.

Before calling this method, call the setExternalAudioSink(enabled: true) method to enable and set the external audio sink.

Ensure that you call this method after joining a channel.

After a successful method call, the app pulls the decoded and mixed audio data for playback.

Note
  • Once you call the pullPlaybackAudioFrame method successfully, the app will not retrieve any audio data from the int, int, int, int, ByteBuffer, long, int) onPlaybackFrame} callback.
  • The difference between the onPlaybackFrame callback and the pullPlaybackAudioFrame method is as follows:
    • onPlaybackFrame: The SDK sends the audio data to the app through this callback. Any delay in processing the audio frames may result in audio jitter.
    • pullPlaybackAudioFrame: The app pulls the remote audio data. After setting the audio data parameters, the SDK adjusts the frame buffer and avoids problems caused by jitter in the external audio playback.
Parameters
dataThe audio data that you want to pull. The data format is in ByteBuffer.
lengthInByteThe data length (byte) of the external audio data. The value of this parameter is related to the audio duration, and the values of the sampleRate and channels parameters that you set in setExternalAudioSink. Agora recommends setting the audio duration no shorter than 10 ms. The formula for lengthInByte is:
lengthInByte = sampleRate/1000 × 2 × channels × audio duration (ms).
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setLogFile()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setLogFile ( String  filePath)

Specifies an SDK output log file.

The log file records all log data for the SDK’s operation. Ensure that the directory for the log file exists and is writable.

Note
Ensure that you call this method immediately after create, or the output log may not be complete.
Parameters
filePathFile path of the log file. The string of the log file is in UTF-8.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setLogFilter()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setLogFilter ( int  filter)

Sets the output log filter level of the SDK.

You can use one or a combination of the filters. The log level follows the sequence of OFF, CRITICAL, ERROR, WARNING, INFO, and DEBUG. Choose a level and you will see logs preceding that level. For example, if you set the log level to WARNING, you see the logs within levels CRITICAL, ERROR, and WARNING.

Parameters
filterSets the log filter level:
  • LOG_FILTER_DEBUG(0x80f): Output all API logs. Set your log filter as DEBUG if you want to get the most complete log file.
  • LOG_FILTER_INFO(0x0f): Output logs of the CRITICAL, ERROR, WARNING, and INFO level. We recommend setting your log filter as this level.
  • LOG_FILTER_WARNING(0x0e): Output logs of the CRITICAL, ERROR, and WARNING level.
  • LOG_FILTER_ERROR(0x0c): Output logs of the CRITICAL and ERROR level.
  • LOG_FILTER_CRITICAL(0x08): Output logs of the CRITICAL level.
  • LOG_FILTER_OFF(0): Do not output any log.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setLogFileSize()

int io.agora.rtc2.internal.RtcEngineImpl.setLogFileSize ( long  fileSizeInKBytes)

Sets the log file size (KB).

The SDK has two log files, each with a default size of 512 KB. If you set fileSizeInBytes as 1024 KB, the SDK outputs log files with a total maximum size of 2 MB. If the total size of the log files exceed the set value, the new output log files overwrite the old output log files.

Parameters
fileSizeInKBytesThe SDK log file size (KB).
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setParameters()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setParameters ( String  parameters)

Provides technical preview functionalities or special customizations by configuring the SDK with JSON options.

The JSON options are not public by default. Agora is working on making commonly used JSON options public in a standard way.

Parameters
parametersParameter to be set as a JSON string in the specified format.
Returns
  • 0: Success.
  • <0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ getParameters()

synchronized String io.agora.rtc2.internal.RtcEngineImpl.getParameters ( String  parameters)

Queries internal states

Parameters
parametersJSON string, array type
Returns
A JSON string

Reimplemented from io.agora.rtc2.RtcEngineInternal.

◆ getCallId()

synchronized String io.agora.rtc2.internal.RtcEngineImpl.getCallId ( )

Gets the current call ID.

When a user joins a channel on a client, a callId is generated to identify the call.

After a call ends, you can call rate or complain to gather feedback from the customer. These methods require a callId parameter. To use these feedback methods, call the this method first to retrieve the callId during the call, and then pass the value as an argument in the rate or complain method after the call ends.

Returns
  • The call ID if the method call is successful.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ getConnectionState()

synchronized RtcConnection.CONNECTION_STATE_TYPE io.agora.rtc2.internal.RtcEngineImpl.getConnectionState ( )

Gets the connection state of the SDK.

Returns
The connection state:

Reimplemented from io.agora.rtc2.RtcEngine.

◆ getConnectionStateEx()

synchronized RtcConnection.CONNECTION_STATE_TYPE io.agora.rtc2.internal.RtcEngineImpl.getConnectionStateEx ( RtcConnection  connection)

Gets the connection state of the SDK.

Parameters
connectionAn output parameter which is used to control different connection instances.
Returns
The connection state:

Reimplemented from io.agora.rtc2.RtcEngineEx.

◆ rate()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.rate ( String  callId,
int  rating,
String  description 
)

Allows a user to rate the call.

It is usually called after the call ends.

Parameters
callIdThe call ID retrieved from the getCallId method.
ratingThe rating of the call between 1 (the lowest score) to 5 (the highest score).
description(Optional) The description of the rating. The string length must be less than 800 bytes.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ complain()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.complain ( String  callId,
String  description 
)

Allows a user to complain about the call quality.

This method is usually called after the call ends.

Parameters
callIdThe call ID retrieved from the getCallId method.
description(Optional) The description of the complaint. The string length must be less than 800 bytes.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setChannelProfile()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setChannelProfile ( int  profile)

Sets the channel profile.

The RtcEngine differentiates channel profiles and applies different optimization algorithms accordingly. For example, it prioritizes smoothness and low latency for a video call, and prioritizes video quality for a video broadcast.

Note
  • To ensure the quality of real-time communication, we recommend that all users in a channel use the same channel profile.
  • Call this method before calling joinChannel. You cannot set the channel profile once you have joined the channel.
Parameters
profileThe channel profile:
  • CHANNEL_PROFILE_COMMUNICATION(0): (Default) Communication. Use this profile when there are two users in the channel.
  • CHANNEL_PROFILE_LIVE_BROADCASTING(1): Live Broadcast. Use this profile when there are more than two users in the channel.
  • CHANNEL_PROFILE_GAME(2): Gaming. This profile is deprecated.
  • CHANNEL_PROFILE_CLOUD_GAMING(3): Cloud gaming. This profile is for interactive streaming scenario which is highly sensitive to end-to-end latency, and any delay in render impacts the end-user experience. These use cases prioritize reducing delay over any smoothing done at the receiver. We recommend using this profile in scenarios there users need to interact with each other.
  • CHANNEL_PROFILE_COMMUNICATION_1v1(4): Communication 1v1. Use this profile when needs communication 1v1.
  • CHANNEL_PROFILE_LIVE_BROADCASTING_2(5): Live Broadcast 2. Use this profile for technical preview.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setClientRole()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setClientRole ( int  role)

Sets the role of a user.

This method sets the user role as either BROADCASTER or AUDIENCE (default).

  • The broadcaster sends and receives streams.
  • The audience receives streams only.

By default, all users are audience regardless of the channel profile. Call this method to change the user role to BROADCASTER so that the user can send a stream.

Parameters
roleThe role of the client:
  • CLIENT_ROLE_BROADCASTER(1): The broadcaster.
  • CLIENT_ROLE_AUDIENCE(2): The audience.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setRemoteVideoStreamType()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setRemoteVideoStreamType ( int  userId,
int  streamType 
)

Sets the remote video stream type.

If the remote user has enabled the dual-stream mode, by default the SDK receives the high-stream video by Call this method to switch to the low-stream video.

Note
This method applies to scenarios where the remote user has enabled the dual-stream mode using enableDualStreamMode(true) before joining the channel.
Parameters
uidID of the remote user sending the video stream.
streamTypeSets the video stream type:
  • 0: High-stream video.
  • 1: Low-stream video.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setRemoteDefaultVideoStreamType()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setRemoteDefaultVideoStreamType ( int  streamType)

Sets the default stream type of the remote video if the remote user has enabled dual-stream.

Parameters
streamTypeSets the default video stream type:
  • 0: High-stream video.
  • 1: Low-stream video.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setRemoteUserPriority()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setRemoteUserPriority ( int  uid,
int  userPriority 
)

Sets the priority of a remote user's media stream.

Since
v2.4.0.

Use this method with the setRemoteSubscribeFallbackOption method. If the fallback function is enabled for a subscribed stream, the SDK ensures the high-priority user gets the best possible stream quality.

Note
The SDK supports setting userPriority as high for one user only.
Parameters
uidThe ID of the remote user.
userPriorityThe priority of the remote user:
Returns
  • 0: Success.
  • <0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setEncryptionMode()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setEncryptionMode ( String  encryptionMode)

Sets the built-in encryption mode.

The Agora Native SDK supports built-in encryption, which is in AES-128-XTS mode by default. If you want to use other modes, call this API to set the encryption mode.

All users in the same channel must use the same encryption mode and password. Refer to information related to the AES encryption algorithm on the differences between encryption modes.

Call setEncryptionSecret to enable the built-in encryption function before calling this API.

Note: Do not use this function together with CDN.

Parameters
encryptionModeEncryption mode:
  • "aes-128-xts": 128-bit AES encryption, XTS mode
  • "aes-128-ecb": 128-bit AES encryption, ECB mode
  • "aes-256-xts": 256-bit AES encryption, XTS mode
  • When it is set to a NUL string "", the encryption is in “aes-128-xts” by default
Returns
  • 0: Success.
  • <0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setEncryptionSecret()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setEncryptionSecret ( String  secret)

Specifies an encryption password to enable built-in encryption before joining a channel.

All users in a channel must set the same encryption password. The encryption password is automatically cleared once a user has left the channel. If the encryption password is not specified or set to empty, the encryption function will be disabled.

Note: Do not use this function together with CDN.

Parameters
secretEncryption Password
Returns
  • 0: Success.
  • <0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ enableEncryption()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.enableEncryption ( boolean  enabled,
EncryptionConfig  config 
)

Enables/Disables the built-in encryption.

In scenarios requiring high security, Agora recommends calling enableEncryption to enable the built-in encryption before joining a channel.

All users in the same channel must use the same encryption mode and encryption key. Once all users leave the channel, the encryption key of this channel is automatically cleared.

Note
  • If you enable the built-in encryption, you cannot use the RTMP streaming function.
  • Agora only supports SM4_128_ECB encryption mode for now.
Parameters
enabledWhether to enable the built-in encryption.
  • true: Enable the built-in encryption.
  • false: Disable the built-in encryption.
configConfigurations of built-in encryption schemas. See {EncryptionConfig}. 0: Success.< 0: Failure.-2(ERR_INVALID_ARGUMENT): An invalid parameter is used. Set the parameter with a valid value.-7(ERR_NOT_INITIALIZED: The SDK is not initialized. Initialize the IRtcEngine instance before calling this method.-4(ERR_NOT_SUPPORTED): The encryption mode is incorrect or the SDK fails to load the external encryption library. Check the enumeration or reload the external encryption library.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ createDataStream() [1/2]

synchronized int io.agora.rtc2.internal.RtcEngineImpl.createDataStream ( boolean  reliable,
boolean  ordered 
)

Creates a data stream.

You can call this method to create a data stream and improve the reliability and ordering of data transmission.

Note
  • Ensure that you set the same value for reliable and ordered.
  • Each user can only create a maximum of 5 data streams during an RtcEngine lifecycle.
  • The data channel allows a data delay of up to 5 seconds. If the receiver does not receive the data stream within 5 seconds, the data channel reports an error.
Parameters
reliableSets whether the recipients are guaranteed to receive the data stream from the sender within five seconds:
  • true: The recipients receive the data stream from the sender within five seconds. If the recipient does not receive the data stream within five seconds, an error is reported to the application.
  • false: There is no guarantee that the recipients receive the data stream within five seconds and no error message is reported for any delay or missing data stream.
orderedSets whether the recipients receive the data stream in the sent order:
  • true: The recipients receive the data stream in the sent order.
  • false: The recipients do not receive the data stream in the sent order.
Returns
  • Returns the stream ID, if the method call is successful.
  • <0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ createDataStreamEx() [1/2]

synchronized int io.agora.rtc2.internal.RtcEngineImpl.createDataStreamEx ( boolean  reliable,
boolean  ordered,
RtcConnection  connection 
)

Creates a data stream.

Each user can only have up to five data channels at the same time.

Parameters
reliable
  • True: The recipients will receive data from the sender within 5 seconds. If the recipient does not receive the sent data within 5 seconds, the data channel will report an error to the application.
  • False: The recipients will not receive any data, and it will not report any error upon data missing.
ordered
  • True: The recipients will receive data in the order of the sender.
  • False: The recipients will not receive data in the order of the sender.
Returns
  • > 0: the Stream ID when the data stream is created.
  • < 0: an error code when it fails to create the data srteam.

Reimplemented from io.agora.rtc2.RtcEngineEx.

◆ createDataStream() [2/2]

synchronized int io.agora.rtc2.internal.RtcEngineImpl.createDataStream ( DataStreamConfig  config)

Creates a data stream.

Each user can create up to five data streams during the lifecycle of the RtcEngine.

Parameters
configThe config of data stream.
Returns

Reimplemented from io.agora.rtc2.RtcEngine.

◆ createDataStreamEx() [2/2]

synchronized int io.agora.rtc2.internal.RtcEngineImpl.createDataStreamEx ( DataStreamConfig  config,
RtcConnection  connection 
)

Creates a data stream.

Each user can create up to five data streams during the lifecycle of the RtcEngine.

Parameters
configThe config of data stream.
Returns

Reimplemented from io.agora.rtc2.RtcEngineEx.

◆ sendStreamMessage()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.sendStreamMessage ( int  streamId,
byte[]  message 
)

◆ sendStreamMessageEx()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.sendStreamMessageEx ( int  streamId,
byte[]  message,
RtcConnection  connection 
)

Sends data stream messages to all users in a channel.

Up to 30 packets can be sent per second in a channel with each packet having a maximum size of 1 kB. The API controls the data channel transfer rate. Each client can send up to 6 kB of data per second. Each user can have up to five data channels simultaneously.

Parameters
streamIdStream ID
messageData to be sent.
connectionConnection ID.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngineEx.

◆ updateSharedContext()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.updateSharedContext ( EGLContext  sharedContext)

Shared context of MediaCodec. Only takes effect when using the hardware encoder and texture as the input source.

Parameters
sharedContextShared context
Returns
int

Reimplemented from io.agora.rtc2.RtcEngineInternal.

◆ setTextureId()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setTextureId ( int  id,
EGLContext  eglContext,
int  width,
int  height,
long  ts 
)

Sets the texture ID to MediaCodec.

Parameters
idTexture ID
eglContexteglContext which the texture belongs to
widthTexture's original width
heightTexture's original height
tsTimestamp of the captured frame (ms)
Returns
Texture ID

Reimplemented from io.agora.rtc2.RtcEngineInternal.

◆ isTextureEncodeSupported()

synchronized boolean io.agora.rtc2.internal.RtcEngineImpl.isTextureEncodeSupported ( )

Checks whether texture encoding is supported.

Returns
True/False.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setExternalVideoSource()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setExternalVideoSource ( boolean  enable,
boolean  useTexture,
boolean  encodedFrame 
)

Sets the external video source.

Once the external video source is enabled, the SDK prepares to accept the external video frame.

Parameters
enableDetermines whether to enable the external video source.
  • true: Enable the external video source. Once set, the SDK creates the external source and prepares video data from pushExternalVideoFrame or pushExternalEncodedVideoImage.
  • false: Disable the external video source.
useTextureDetermines whether to use textured video data.
  • true: Use texture, which is not supported now.
  • False: Do not use texture.
encodedFrameDetermines whether the external video source is encoded.
  • true: The external video source is encoded.
  • false: The external video source is not encoded.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ pushExternalVideoFrame() [1/2]

synchronized boolean io.agora.rtc2.internal.RtcEngineImpl.pushExternalVideoFrame ( AgoraVideoFrame  frame)

◆ pushExternalVideoFrameEx() [1/2]

synchronized int io.agora.rtc2.internal.RtcEngineImpl.pushExternalVideoFrameEx ( AgoraVideoFrame  frame,
RtcConnection  connection 
)

Pushes the external video frame to the app with specified connection.

Note
Ensure that you call setExternalVideoSource before calling this method.
Parameters
frameThe external video frame: ExternalVideoFrame.
connectionAn output parameter which is used to control different connection instances.
Returns
  • 0: Success, which means that the external video frame is pushed successfully.
  • < 0: Failure, which means that the external video frame fails to be pushed.

Reimplemented from io.agora.rtc2.RtcEngineEx.

◆ pushExternalVideoFrame() [2/2]

boolean io.agora.rtc2.internal.RtcEngineImpl.pushExternalVideoFrame ( VideoFrame  frame)

◆ pushExternalVideoFrameEx() [2/2]

int io.agora.rtc2.internal.RtcEngineImpl.pushExternalVideoFrameEx ( VideoFrame  frame,
RtcConnection  connection 
)

Pushes the external video frame to the app.

Note
Ensure that you call setExternalVideoSource before calling this method.
Parameters
frameThe external video frame: VideoFrame.
connectionAn output parameter which is used to control different connection instances.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngineEx.

◆ pushExternalEncodedVideoFrame()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.pushExternalEncodedVideoFrame ( ByteBuffer  data,
EncodedVideoFrameInfo  frameInfo 
)

Pushes the encoded external video frame to Agora SDK.

Note
Ensure that you call setExternalVideoSource before calling this method.
Parameters
dataThe encoded external video data, which must be the direct buffer.
frameInfoThe encoded external video frame info: {EncodedVideoFrameInfo}. 0: Success, which means that the encoded external video frame is pushed successfully.< 0: Failure, which means that the encoded external video frame fails to be pushed.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ pushExternalEncodedVideoFrameEx()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.pushExternalEncodedVideoFrameEx ( ByteBuffer  data,
EncodedVideoFrameInfo  frameInfo,
RtcConnection  connection 
)

Pushes the encoded external video frame to the app with specified connection.

Note
Ensure that you call setExternalVideoSource before calling this method.
Parameters
dataThe encoded external video data, which must be the direct buffer.
frameInfoThe encoded external video frame info: {EncodedVideoFrameInfo}. connection The connection. Use the connection you use when calling joinChannelEx. If you use joinChannel, use DEFAULT_CONNECTION_ID(0). 0: Success, which means that the encoded external video frame is pushed successfully.< 0: Failure, which means that the encoded external video frame fails to be pushed.

Reimplemented from io.agora.rtc2.RtcEngineEx.

◆ registerVideoEncodedImageReceiver()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.registerVideoEncodedImageReceiver ( IVideoEncodedImageReceiver  receiver)

Registers a receiver object for the encoded video image.

Note
  • Ensure that you call this method before joining the channel.
  • If you register a receiver for encoded video data, you cannot register an IVideoFrameObserver object.
Parameters
receiverThe IVideoEncodedImageReceiver object: {IVideoEncodedImageReceiver}. 0: Success.< 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ addPublishStreamUrl()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.addPublishStreamUrl ( String  url,
boolean  transcodingEnabled 
)

Adds the URL to which the host publishes the stream.

Used in CDN live only.

Parameters
urlURL to which the host publishes the stream.
transcodingEnabledWhether transcoding is enabled. True/False.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ removePublishStreamUrl()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.removePublishStreamUrl ( String  url)

Removes the URL to which the host publishes the stream.

Used in CDN live only.

Note:

  • This method only removes one URL each time it is called.
  • Do not add special characters such as Chinese to the URL.
Parameters
urlURL to which the host publishes the stream.
Returns
  • 0: Success.
  • <0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setLiveTranscoding()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setLiveTranscoding ( LiveTranscoding  transcoding)

Sets the video layout and audio for CDN Live.

Used in CDN live only.

Parameters
transcodingLiveTranscoding

Reimplemented from io.agora.rtc2.RtcEngine.

◆ addInjectStreamUrl()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.addInjectStreamUrl ( String  url,
LiveInjectStreamConfig  config 
)

Adds a URL address of the added stream into the live broadcast channel.

If successful, you can find the stream in the channels of argus and the uid of the stream is 666.

Parameters
urlURL address to be added into the ongoing live broadcast. You can use the RTMP, HLS, and FLV live streaming protocols.
configLiveInjectStreamConfig
Returns
  • 0: Success.
  • <0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ removeInjectStreamUrl()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.removeInjectStreamUrl ( String  url)

Removes the URL from the live broadcast.

Parameters
urlURL address of the added stream to be removed.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ startChannelMediaRelay()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.startChannelMediaRelay ( ChannelMediaRelayConfiguration  channelMediaRelayConfiguration)

Starts to relay media streams across channels.

After a successful method call, the SDK triggers the {onChannelMediaRelayStateChanged} and IRtcEngineEventHandler#onChannelMediaRelayEvent onChannelMediaRelayEvent} callbacks, and these callbacks return the state and events of the media stream relay.If the onChannelMediaRelayStateChanged callback returns RELAY_STATE_RUNNING(2) and RELAY_OK(0), and the onChannelMediaRelayEvent callback returns RELAY_EVENT_PACKET_SENT_TO_DEST_CHANNEL(4), the SDK starts relaying media streams between the original and the destination channel.If the onChannelMediaRelayStateChanged callback returns RELAY_STATE_FAILURE(3), an exception occurs during the media stream relay. Contact sales.nosp@m.-us@.nosp@m.agora.nosp@m..io before implementing this function.We do not support string user accounts in this API.Call this method after the joinChannel method.This method takes effect only when you are a broadcaster in a Live-broadcast channel.After a successful method call, if you want to call this method again, ensure that you call the stopChannelMediaRelay stopChannelMediaRelay} method to quit the current relay. channelMediaRelayConfiguration The configuration of the media stream relay. See { io.agora.rtc2.video.ChannelMediaRelayConfiguration ChannelMediaRelayConfiguration}. 0: Success.< 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ stopChannelMediaRelay()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.stopChannelMediaRelay ( )

◆ updateChannelMediaRelay()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.updateChannelMediaRelay ( ChannelMediaRelayConfiguration  channelMediaRelayConfiguration)

Updates the channels for media relay.

After the channel media relay starts, if you want to relay the media stream to more channels, or leave the current relay channel, you can call the updateChannelMediaRelay method.

After a successful method call, the SDK triggers the {onChannelMediaRelayEvent} callback with the RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL(7) state code. channelMediaRelayConfiguration The media stream relay configuration: { io.agora.rtc.video.ChannelMediaRelayConfiguration ChannelMediaRelayConfiguration}. 0: Success.< 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ getNativeHandle()

synchronized long io.agora.rtc2.internal.RtcEngineImpl.getNativeHandle ( )

Returns the native handler of the SDK Engine.

This interface is used to get native the C++ handler of the SDK engine that can be used in special scenarios, such as register the audio and video frame observer.

Returns

Reimplemented from io.agora.rtc2.RtcEngine.

◆ configPublisher()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.configPublisher ( PublisherConfiguration  config)

Configures the push-stream settings for the engine before joining a channel for CDN Live.

Agora provides a Builder class to configure the push-stream for CDN Live.

Note:

  • Check the Builder Class on how to call each method included for the push-stream settings configuration.
  • Set the resolution, frame rate, and bitrate the same as those of the uplink host to avoid video quality degradation.
  • This method is in beta. Contact sales@agora.io to use this method.
Parameters
configPublisherConfiguration
Returns
  • 0: Success.
  • <0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setVideoCompositingLayout()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setVideoCompositingLayout ( VideoCompositingLayout  layout)

Sets the picture-in-picture layouts for live broadcast.

This method is only applicable when you want to push streams at the Agora server. When you push stream at the server:

  1. Define a canvas, its width and height (video resolution), the background color, and the number of videos you want to display in total.
  2. Define the position and size of each video on the canvas, and whether it is cropped or zoomed to fit.

The push stream application will format the information of the customized layouts as JSON and package it to the Supplemental Enhancement Information (SEI) of each keyframe when generating the H.264 video stream and pushing it to the CDN vendors through the RTMP protocol.

Note:

  • Call this method after joining a channel.
  • The application should only allow one user to call this method in the same channel, if more than one user calls this method, the other users must call clearVideoCompositingLayout to remove the settings.
Parameters
layoutVideoCompositingLayout

Reimplemented from io.agora.rtc2.RtcEngine.

◆ clearVideoCompositingLayout()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.clearVideoCompositingLayout ( )

Removes the settings made after calling setVideoCompositingLayout.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ getAudioEffectManager()

IAudioEffectManager io.agora.rtc2.internal.RtcEngineImpl.getAudioEffectManager ( )

Begin of implementations of IAudioEffectManager

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setLocalVoicePitch()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setLocalVoicePitch ( double  pitch)

Sets the voice pitch of the local speaker.

Parameters
pitchVoice frequency, in the range of 0.5 to 2.0. The default value is 1.0.
Returns
  • 0: Success.
  • <0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setLocalVoiceEqualization()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setLocalVoiceEqualization ( int  bandFrequency,
int  bandGain 
)

Sets the local voice equalization effect.

Parameters
bandFrequencyThe band frequency ranging from 0 to 9; representing the respective 10-band center frequencies of voice effects, including 31, 62, 125, 500, 1k, 2k, 4k, 8k, and 16k Hz.
bandGainGain of each band in dB; ranging from -15 to 15.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setLocalVoiceReverb()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setLocalVoiceReverb ( int  reverbKey,
int  value 
)

Sets the local voice reverberation.

Parameters
reverbKeyThe reverberation key. This method contains five reverberation keys. For details, see the description of each value.
valueLocal voice reverberation value:

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setLocalVoiceChanger()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setLocalVoiceChanger ( int  voiceChanger)

Sets the local voice changer option.

This method can be used to set the local voice effect for users in a communication channel or broadcasters in a live broadcast channel. Voice changer options include the following voice effects:

  • VOICE_CHANGER_XXX: Changes the local voice to an old man, a little boy, or the Hulk. Applies to the voice talk scenario.
  • VOICE_BEAUTY_XXX: Beautifies the local voice by making it sound more vigorous, resounding, or adding spacial resonance. Applies to the voice talk and singing scenario.
  • GENERAL_VOICE_BEAUTY_XXX: Adds gender-based beautification effect to the local voice. Applies to the voice talk scenario.
    • For a male voice: Adds magnetism to the voice.
    • For a female voice: Adds freshness or vitality to the voice.
Note
  • To achieve better voice effect quality, Agora recommends setting the profile parameter in setAudioProfile as AUDIO_PROFILE_MUSIC_HIGH_QUALITY or AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO.
  • This method works best with the human voice, and Agora does not recommend using it for audio containing music and a human voice.
  • Do not use this method with setLocalVoiceReverbPreset, because the method called later overrides the one called earlier.
Parameters
voiceChangerThe local voice changer option:
Returns
  • 0: Success.
  • -1: Failure. Check if the enumeration is properly set.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setLocalVoiceReverbPreset()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setLocalVoiceReverbPreset ( int  reverbPreset)

Sets the local voice reverberation option.

This method sets the local voice reverberation for users in a communication channel or broadcasters in a live-broadcast channel. After successfully calling this method, all users in the channel can hear the voice with reverberation.

Note
  • When calling this method with enumerations that begin with AUDIO_REVERB_FX, ensure that you set profile in setAudioProfile as AUDIO_PROFILE_MUSIC_HIGH_QUALITY or AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO. Otherwise, this method call does not take effect.
  • This method works best with the human voice, and Agora does not recommend using it for audio containing music and a human voice.
  • Do not use this method with setLocalVoiceChanger, because the method called later overrides the one called earlier.
Parameters
reverbPresetThe local voice reverberation option. To achieve better voice effects, Agora recommends the enumeration whose name begins with AUDIO_REVERB_FX.
Returns
  • 0: Success.
  • -1: Failure. Check if the enumeration is properly set.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setInEarMonitoringVolume()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setInEarMonitoringVolume ( int  volume)

Sets the volume of the in-ear monitoring.

Parameters
volumeThe volume of the in-ear monitor, ranging from 0 to 100. The default value is 100.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ getEffectsVolume()

synchronized double io.agora.rtc2.internal.RtcEngineImpl.getEffectsVolume ( )

Gets the volume of the audio effects.

Returns
  • Returns the volume of audio effects, if the method call is successful. The value ranges between 0.0 and 100.0 (original volume).
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setEffectsVolume()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setEffectsVolume ( double  volume)

Sets the volume of audio effects.

Parameters
volumeThe volume of audio effects. The value ranges between 0.0 and 100.0 (default).
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ preloadEffect()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.preloadEffect ( int  soundId,
String  filePath 
)

Preloads a specified audio effect.

This method preloads only one specified audio effect into the memory each time it is called. To preload multiple audio effects, call this method multiple times.

After preloading, you can call  playEffect to play the preloaded audio effect or call  playAllEffects to play all the preloaded audio effects.

Note
  • To ensure smooth communication, limit the size of the audio effect file.
  • Agora recommends calling this method before joining the channel.
Parameters
soundIdThe ID of the audio effect.
filePathThe absolute path of the local audio effect file or the URL of the online audio effect file. Supported audio formats: mp3, mp4, m4a, aac, 3gp, mkv and wav.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ playEffect()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.playEffect ( int  soundId,
String  filePath,
int  loopCount,
double  pitch,
double  pan,
double  gain,
boolean  publish 
)

Plays a specified audio effect.

After calling preloadEffect, you can call this method to play the specified audio effect for all users in the channel.

This method plays only one specified audio effect each time it is called. To play multiple audio effects, call this method multiple times.

Note
  • Agora recommends playing no more than three audio effects at the same time.
  • The ID and file path of the audio effect in this method must be the same as that in the preloadEffect method.
Parameters
soundIdThe ID of the audio effect.
filePathThe absolute path of the local audio effect file or the URL of the online audio effect file. Supported audio formats: mp3, mp4, m4a, aac, 3gp, mkv and wav.
loopCountThe number of times the audio effect loops:

Reimplemented from io.agora.rtc2.RtcEngine.

◆ playAllEffects()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.playAllEffects ( int  loopCount,
double  pitch,
double  pan,
double  gain,
boolean  publish 
)

◆ getVolumeOfEffect()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.getVolumeOfEffect ( int  soundId)

Get the volume of a specified sound effect.

Parameters
soundIdThe ID of the audio effect.
Returns
  • Returns the volume of the specified audio effect, if the method call is successful. The value ranges between 0.0 and 100.0 (original volume).
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setVolumeOfEffect()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setVolumeOfEffect ( int  soundId,
double  volume 
)

Sets the volume of the specified audio effect.

Parameters
soundIdThe ID of the audio effect.
volumeThe volume of the specified audio effect. The value ranges between 0.0 and 100.0 (default).
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ pauseEffect()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.pauseEffect ( int  soundId)

Pauses playing the specified audio effect.

Parameters
soundIdThe ID of the audio effect.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ pauseAllEffects()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.pauseAllEffects ( )

Pauses playing all audio effects.

Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ resumeEffect()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.resumeEffect ( int  soundId)

Resumes playing the specified audio effect.

Parameters
soundIdThe ID of the audio effect.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ resumeAllEffects()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.resumeAllEffects ( )

Resumes playing all audio effects.

Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ stopEffect()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.stopEffect ( int  soundId)

Stops playing the specified audio effect.

Parameters
soundIdThe ID of the audio effect.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ stopAllEffects()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.stopAllEffects ( )

Stops playing all audio effects.

Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ unloadEffect()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.unloadEffect ( int  soundId)

Releases the specific preloaded audio effect from the memory.

Parameters
soundIdThe ID of the audio effect.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ unloadAllEffects()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.unloadAllEffects ( )

Releases all preloaded audio effects from the memory.

Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setApiCallMode()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setApiCallMode ( int  syncCallTimeout)

End of implementations of IAudioEffectManager

Reimplemented from io.agora.rtc2.RtcEngineInternal.

◆ startScreenCapture()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.startScreenCapture ( Intent  mediaProjectionPermissionResultData,
ScreenCaptureParameters  parameters 
)

Screen sharing by specifying a result data which obtained from a successful screen capture request.

Note
From Android 10 and later, a Service must be running and call startForeground to post a Notification before we can obtain the MediaProjection instance; failing to do so will cause a SecurityException. https://developer.android.google.cn/about/versions/10/privacy/changes#screen-contents
Parameters
mediaProjectionPermissionResultDataThe resulting data from android.app.Activity#onActivityResult.
parametersSets the screen sharing encoding parameters. See ScreenCaptureParameters.
Returns
  • 0: Success.
  • < 0: Failure.
    • ERR_INVALID_ARGUMENT if mediaProjectionPermissionResultData is null.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ stopScreenCapture()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.stopScreenCapture ( )

Stops the screen sharing.

Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ registerVideoFrameObserver()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.registerVideoFrameObserver ( IVideoFrameObserver  observer)

Registers a video frame observer object.

You need to implement the IVideoFrameObserver class in this method, and register callbacks according to your scenarios.

After you successfully register the video frame observer, the SDK triggers the registered callbacks each time a video frame is received.

Note
When handling the video data returned in the callbacks, pay attention to the changes in the width and height parameters, which may be adapted under the following circumstances:
  • When the network condition deteriorates, the video resolution decreases incrementally.
  • If the user adjusts the video profile, the resolution of the video returned in the callbacks also changes.
Parameters
observerVideo frame observer object instance. See {IVideoFrameObserver}. 0: Success.< 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setExtensionProperty()

synchronized boolean io.agora.rtc2.internal.RtcEngineImpl.setExtensionProperty ( String  vendor,
String  key,
String  value 
)

Get local video filter property

Parameters
vendorfilter's vendor
keyproperty's key
valueproperty's value
Returns
true, if get property success, otherwise false

Reimplemented from io.agora.rtc2.RtcEngine.

◆ registerMediaMetadataObserver()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.registerMediaMetadataObserver ( IMetadataObserver  observer,
int  type 
)

Registers the metadata observer.

You need to implement the IMetadataObserver class and specify the metadata type in this method. This method enables you to add synchronized metadata in the video stream for more diversified live interactive streaming, such as sending shopping links, digital coupons, and online quizzes.

A successful call of this method triggers the {getMaxMetadataSize} callback. Call this method before the joinChannel method.This method applies to the Live Broadcast profile. observer The IMetadataObserver class. type The metadata type. Currently, the SDK supports { io.agora.rtc2.IMetadataObserver#VIDEO_METADATA VIDEO_METADATA(0)} only. io.agora.rtc2.IMetadataObserver#UNKNOWN_METADATA UNKNOWN_METADATA(-1)}: the metadata type is unknown. io.agora.rtc2.IMetadataObserver#VIDEO_METADATA VIDEO_METADATA(0)}: the metadata type is video. 0: Success.< 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ unregisterMediaMetadataObserver()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.unregisterMediaMetadataObserver ( IMetadataObserver  observer,
int  type 
)

Unregisters the metadata observer.

Parameters
observerThe IMetadataObserver class.
typeThe metadata type. Currently, the SDK supports {VIDEO_METADATA(0)} only. 0: Success.< 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ setLogLevel()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.setLogLevel ( int  level)

Sets the output log level of the SDK.

You can use one of the level defined in LogLevel.

Parameters
levelSets the log level: LogLevel.
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ enableExternalAudioSourceLocalPlayback()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.enableExternalAudioSourceLocalPlayback ( boolean  enabled)

Enable or disable the external audio source local playback.

  • Parameters
    enabledDetermines whether to enable the external audio source local playback:
  • true: Enable the external audio source local playback.
  • false: (default) Disable the external audio source local playback.
    Returns
  • 0: Success.
  • <0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ registerLocalUserAccount()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.registerLocalUserAccount ( String  appId,
String  userAccount 
)

Registers a user account.

Once registered, the user account can be used to identify the local user when the user joins the channel. After the user successfully registers a user account, the SDK triggers the onLocalUserRegistered callback on the local client, reporting the user ID and user account of the local user.

To join a channel with a user account, you can choose either of the following:

  • Call the registerLocalUserAccount method to create a user account, and then the joinChannelWithUserAccount method to join the channel.
  • Call the joinChannelWithUserAccount method to join the channel.

The difference between the two is that for the former, the time elapsed between calling the joinChannelWithUserAccount method and joining the channel is shorter than the latter.

Note
  • Ensure that you set the userAccount parameter. Otherwise, this method does not take effect.
  • Ensure that the value of the userAccount parameter is unique in the channel.
  • To ensure smooth communication, use the same parameter type to identify the user. For example, if a user joins the channel with a user ID, then ensure all the other users use the user ID too. The same applies to the user account. If a user joins the channel with the Agora Web SDK, ensure that the uid of the user is set to the same parameter type.
Parameters
appIdThe App ID of your project.
userAccountThe user account. The maximum length of this parameter is 255 bytes. Ensure that you set this parameter and do not set it as null. Supported character scopes are:
  • All lowercase English letters: a to z.
  • All uppercase English letters: A to Z.
  • All numeric characters: 0 to 9.
  • The space character.
  • Punctuation characters and other symbols, including: "!", "#", "$", "%", "&", "(", ")", "+", "-", ":", ";", "<", "=", ".", ">", "?", "@", "[", "]", "^", "_", " {", "}", "|", "~", ",".
Returns
  • 0: Success.
  • < 0: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ joinChannelWithUserAccount()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.joinChannelWithUserAccount ( String  token,
String  channelId,
String  userAccount 
)

Joins the channel with a user account.

After the user successfully joins the channel, the SDK triggers the following callbacks:

  • The local client: onLocalUserRegistered and onJoinChannelSuccess . The remote client: onUserJoined and onUserInfoUpdated , if the user joining the channel is in the COMMUNICATION profile, or is a host in the LIVE_BROADCASTING profile.
Note
To ensure smooth communication, use the same parameter type to identify the user. For example, if a user joins the channel with a user ID, then ensure all the other users use the user ID too. The same applies to the user account. If a user joins the channel with the Agora Web SDK, ensure that the uid of the user is set to the same parameter type.
Parameters
tokenThe token generated at your server:
  • For low-security requirements: You can use the temporary token generated at Console. For details, see Get a temporary toke.
  • For high-security requirements: Set it as the token generated at your server. For details, see Get a token.
channelIdThe channel name. The maximum length of this parameter is 64 bytes. Supported character scopes are:
  • All lowercase English letters: a to z.
  • All uppercase English letters: A to Z.
  • All numeric characters: 0 to 9.
  • The space character.
  • Punctuation characters and other symbols, including: "!", "#", "$", "%", "&", "(", ")", "+", "-", ":", ";", "<", "=", ".", ">", "?", "@", "[", "]", "^", "_", " {", "}", "|", "~", ",".
userAccountThe user account. The maximum length of this parameter is 255 bytes. Ensure that you set this parameter and do not set it as null. Supported character scopes are:
  • All lowercase English letters: a to z.
  • All uppercase English letters: A to Z.
  • All numeric characters: 0 to 9.
  • The space character.
  • Punctuation characters and other symbols, including: "!", "#", "$", "%", "&", "(", ")", "+", "-", ":", ";", "<", "=", ".", ">", "?", "@", "[", "]", "^", "_", " {", "}", "|", "~", ",".
optionsThe channel media options: ChannelMediaOptions
Returns
  • 0: Success.
  • < 0: Failure.
    • #ERR_INVALID_ARGUMENT (-2)
    • #ERR_NOT_READY (-3)
    • #ERR_REFUSED (-5)

Reimplemented from io.agora.rtc2.RtcEngine.

◆ joinChannelWithUserAccountEx()

synchronized int io.agora.rtc2.internal.RtcEngineImpl.joinChannelWithUserAccountEx ( String  token,
String  channelId,
String  userAccount,
ChannelMediaOptions  options,
IRtcEngineEventHandler  eventHandler,
RtcConnection  connection 
)

Joins the channel with a user account.

After the user successfully joins the channel, the SDK triggers the following callbacks:

  • The local client: onLocalUserRegistered and onJoinChannelSuccess . The remote client: onUserJoined and onUserInfoUpdated , if the user joining the channel is in the COMMUNICATION profile, or is a host in the LIVE_BROADCASTING profile.
Note
To ensure smooth communication, use the same parameter type to identify the user. For example, if a user joins the channel with a user ID, then ensure all the other users use the user ID too. The same applies to the user account. If a user joins the channel with the Agora Web SDK, ensure that the uid of the user is set to the same parameter type.
Parameters
tokenThe token generated at your server:
  • For low-security requirements: You can use the temporary token generated at Console. For details, see Get a temporary toke.
  • For high-security requirements: Set it as the token generated at your server. For details, see Get a token.
channelIdThe channel name. The maximum length of this parameter is 64 bytes. Supported character scopes are:
  • All lowercase English letters: a to z.
  • All uppercase English letters: A to Z.
  • All numeric characters: 0 to 9.
  • The space character.
  • Punctuation characters and other symbols, including: "!", "#", "$", "%", "&", "(", ")", "+", "-", ":", ";", "<", "=", ".", ">", "?", "@", "[", "]", "^", "_", " {", "}", "|", "~", ",".
userAccountThe user account. The maximum length of this parameter is 255 bytes. Ensure that you set this parameter and do not set it as null. Supported character scopes are:
  • All lowercase English letters: a to z.
  • All uppercase English letters: A to Z.
  • All numeric characters: 0 to 9.
  • The space character.
  • Punctuation characters and other symbols, including: "!", "#", "$", "%", "&", "(", ")", "+", "-", ":", ";", "<", "=", ".", ">", "?", "@", "[", "]", "^", "_", " {", "}", "|", "~", ",".
optionsThe channel media options: ChannelMediaOptions
Returns
  • 0: Success.
  • < 0: Failure.
    • #ERR_INVALID_ARGUMENT (-2)
    • #ERR_NOT_READY (-3)
    • #ERR_REFUSED (-5)

Reimplemented from io.agora.rtc2.RtcEngineEx.

◆ getUserInfoByUserAccount() [1/2]

UserInfo io.agora.rtc2.internal.RtcEngineImpl.getUserInfoByUserAccount ( String  userAccount)

Gets the user information by passing in the user account.

After a remote user joins the channel, the SDK gets the user ID and user account of the remote user, caches them in a mapping table object (userInfo), and triggers the onUserInfoUpdated callback on the local client.

After receiving the oonUserInfoUpdated callback, you can call this method to get the user ID of the remote user from the userInfo object by passing in the user account.

Parameters
userAccountThe user account of the user. Ensure that you set this parameter.
Returns
userInfo A userInfo object that identifies the user
  • not null: Success.
  • null: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ getUserInfoByUserAccount() [2/2]

synchronized UserInfo io.agora.rtc2.internal.RtcEngineImpl.getUserInfoByUserAccount ( String  userAccount,
RtcConnection  connection 
)

Gets the user information by passing in the user account.

After a remote user joins the channel, the SDK gets the user ID and user account of the remote user, caches them in a mapping table object (userInfo), and triggers the onUserInfoUpdated callback on the local client.

After receiving the oonUserInfoUpdated callback, you can call this method to get the user ID of the remote user from the userInfo object by passing in the user account.

Parameters
userAccountThe user account of the user. Ensure that you set this parameter.
Returns
userInfo A userInfo object that identifies the user
  • not null: Success.
  • null: Failure.

Reimplemented from io.agora.rtc2.RtcEngineEx.

◆ getUserInfoByUid() [1/2]

synchronized UserInfo io.agora.rtc2.internal.RtcEngineImpl.getUserInfoByUid ( int  uid)

Gets the user information by passing in the user ID.

After a remote user joins the channel, the SDK gets the user ID and user account of the remote user, caches them in a mapping table object (userInfo), and triggers the onUserInfoUpdated callback on the local client.

After receiving the onUserInfoUpdated callback, you can call this method to get the user account of the remote user from the userInfo object by passing in the user ID.

Parameters
uidThe user ID of the remote user. Ensure that you set this parameter.
Returns
userInfo A userInfo object that identifies the user
  • not null: Success.
  • null: Failure.

Reimplemented from io.agora.rtc2.RtcEngine.

◆ getUserInfoByUid() [2/2]

synchronized UserInfo io.agora.rtc2.internal.RtcEngineImpl.getUserInfoByUid ( int  uid,
RtcConnection  connection 
)

Gets the user information by passing in the user ID.

After a remote user joins the channel, the SDK gets the user ID and user account of the remote user, caches them in a mapping table object (userInfo), and triggers the onUserInfoUpdated callback on the local client.

After receiving the onUserInfoUpdated callback, you can call this method to get the user account of the remote user from the userInfo object by passing in the user ID.

Parameters
uidThe user ID of the remote user. Ensure that you set this parameter.
Returns
userInfo A userInfo object that identifies the user
  • not null: Success.
  • null: Failure.

Reimplemented from io.agora.rtc2.RtcEngineEx.