This page provides the release notes for the Agora Voice SDK for Android.

Overview

The Voice SDK supports the following scenarios:

  • Voice communication
  • Live audio broadcast

For the key features included in each scenario, see Voice Overview and Audio Broadcast Overview.

Known Issues and Limitations

Privacy changes

If your app targets Android 9, you should keep the following behavior changes in mind. These updates to device serial and DNS information enhance user privacy.

Build serial number deprecation

In Android 9, Build.SERIAL is always set to "UNKNOWN" to protect users' privacy.
If your app needs to access a device's hardware serial number, you should instead request the READ_PHONE_STATE permission, then call getSerial().

DNS privacy

Apps targeting Android 9 should honor the private DNS APIs. In particular, apps should ensure that, if the system resolver is doing DNS-over-TLS, any built-in DNS client either uses encrypted DNS to the same hostname as the system, or is disabled in favor of the system resolver.

For more information about privacy changes, see Android Privacy Changes.

v2.4.0

v2.4.0 is released on April 1, 2019.

New Features

1. Voice changer and voice reverberation

Adding voice changer and reverberation effects in an audio chat room brings much more fun. v2.4.0 adds the setLocalVoiceChanger and setLocalVoiceReverbPreset methods, allowing you to change your voice or reverberation by choosing from the preset options. See Adjust the pitch and tone.

2. Tracking the sound position of a remote user

v2.4.0 adds the enableSoundPositionIndication and setRemoteVoicePosition methods. Call the enableSoundPositionIndication method before joining a channel to enable stereo panning for the remote users, and then you can call the setRemoteVoicePosition method to track the position of a remote user.

3. Pre-call last-mile network probe test

Conducting a last-mile probe test before joining the channel helps the local user to evaluate or predict the uplink network conditions. v2.4.0 adds the startLastmileProbeTest, stopLastmileProbeTest, and onLastmileProbeResult APIs, allowing you to get the uplink and downlink last-mile network statistics, including the bandwidth, packet loss, jitter, and round-trip time (RTT).

4. State of an audio mixing file

v2.4.0 adds the onAudioMixingStateChanged callback to report any change of the audio-mixing file playback state (playback succeeds or fails) and the corresponding reason. This release also adds the warning code 701, which is triggered if the local audio-mixing file does not exist, or if the SDK does not support the file format or cannot access the music file URL when playing the audio-mixing file.

5. Setting the log file size

The SDK has two log files, each with a default size of 512 KB. In case some customers require more than the default size, v2.4.0 adds the setLogFileSize method for setting the log file size (KB).

Improvements

1. Accuracy of call quality statistics

  • v2.4.0 adds the intervalInSeconds parameter to the startEchoTest method, allowing you to set the interval between when you speak and when the recording plays back.
  • v2.4.0 adds three parameters to the LocalVideoStats class: targetBitrate for setting the target bitrate of the current encoder, targetFrameRate for setting the target frame rate, and qualityAdaptIndication for reporting the quality of the local video since last count.

2. Core quality improvements

  • Reduces the audio delay.
  • Improves the video quality and stability.
  • Shortens the time to render the first remote video frame.
  • Reduces the time delay when playing through the earpiece and minimizes the echo.

Issues Fixed

Audio

  • Calling the enableLocalAudio method disconnects all connected Bluetooth devices.
  • The SDK does not support audio mixing URLs with Chinese characters.
  • Volume levels of the high-pitch sound are lowered.
  • Sounds are occasionally played fast.
  • The app cannot adjust the volume on some devices.

Miscellaneous

  • The user drop-offline time between Android and iOS is not unified.
  • The SEI information does not synchronize with the media stream when publishing transcoded streams to the CDN.

API Changes

To improve your experience, we made the following changes to the APIs:

Added

Deprecated

  • startEchoTest

v2.3.3

v2.3.3 is released on January 24, 2019.

Issues Fixed

  • Occasional inaccurate statistics returned in the onNetworkQuality callback.
  • Occasional crashes on Huawei P9.

v2.3.2

v2.3.2 is released on January 16, 2019.

Before Getting Started

Besides the new features and improvements mentioned below, it is worth noting that v2.3.2:

  • Improves the SDK's ability to counter packet loss under unreliable network conditions.
  • Improves the communication smoothness.
  • Reduces video freezes in the Live Broadcast profile.

Before upgrading your SDK, ensure that the version is:

  • Native SDK v1.11 or later.
  • Web SDK v2.1 or later.

New Features

Independent audio mixing volume adjustments for local playback and remote publishing

v2.3.2 adds the adjustAudioMixingPlayoutVolume and adjustAudioMixingPublishVolume methods to complement the adjustAudioMixingVolume method, allowing you to independently adjust the audio mixing volume for local playback and remote publishing. See Adjust the Volume for the scenarios and corresponding APIs.

Improvements

1. Improves the accuracy of the call quality statistics

v2.3.2 deprecates the onAudioQuality callback and replaces it with the onRemoteAudioStats callback to improve the accuracy of the call quality statistics. The onRemoteAudioStats callback returns parameters such as the audio frame loss rate, end-to-end audio delay, and jitter buffer delay at the receiver, which are more closely linked to the real user experience. In addition, v2.3.2 optimizes the algorithm of the onNetworkQuality callback for the uplink and downlink network qualities.

  • onRemoteAudioStats: Reports the statistics of the remote audio stream from each user/host. This callback replaces the onAudioQuality callback.
  • onNetworkQuality: Reports the last mile network quality of each user in the channel.

We plan to improve the following callback in subsequent versions:

  • onLastmileQuality: Reports the last mile network quality of the local user before the user joins a channel.

For the list of API methods related to the call quality statistics and on how and when to use them, see Report In-call Statistics.

2. New network connection policy

v2.3.2 adds the following API method and callback to get the current network connection state and the reason for a connection state change:

v2.3.2 deprecates the onConnectionInterrupted and onConnectionBanned callbacks.

In the new API method, the network connection states are "disconnected", "connecting", "connected", "reconnecting", and "failed". The SDK triggers the onConnectionStateChanged callback when the network connection state changes. The SDK also triggers the onConnectionInterrupted and onConnectionBanned callbacks under certain circumstances, but we do not recommend using them.

3. Improves the call rating system

v2.3.2 changes the rating parameter in the rate method to "1 to 5" to encourage more feedback from end-users on the quality of a call or live broadcast. You can use this feedback for future product improvement. We strongly recommend integrating this method in your app.

4. Other improvements

  • Minimizes packet loss under unreliable network conditions in the Live Broadcast profile.
  • Improves the stability in pushing streams.
  • Improves the performance of the SDK on Android 6.0 or later.
  • Optimizes the API calling threads.
  • Checks the headset and Bluetooth device connection.
  • Reduces the audio delay.

Issues Fixed

The following issues are fixed in v2.3.2:

SDK

  • Crashes on emulators, such as Yeshen and mumu.
  • Crashes on Android 6.0+ due to x86 .so relocation.

Audio

  • A user joins a live broadcast with a Bluetooth headset. The audio is not played through the Bluetooth headset when the user leaves the channel and opens another app.
  • Crashes when calling the startAudioMixing method to play music files.
  • A previously disabled microphone becomes enabled when the device connects to a headset.
  • On Huawei Mate 20 X, a remote user cannot hear any voice when the app switches to the background and the user opens another app.
  • Echo on Pixel 2.
  • Cannot adjust the volume of the speaker when users change roles, join and leave channels, or a system phone or Siri interrupts.
  • Users do not hear any voice for a while when an app switches back from the background.

API Changes

To improve your experience, we made the following changes to the APIs:

Added:

Deprecated

v2.3.1

v2.3.1 is released on October 12, 2018.

New features

Disables/Re-enables the Local Audio Function

When a user joins a channel, the audio function is enabled by default.
To receive audio streams without sending any audio stream after joining a channel, this version adds the enableLocalAudio method is to disable or re-enable the local audio function.
Once the local audio function is disabled or re-enabled, the SDK returns the onMicrophoneEnabled callback, and the local audio capturing stops.
This method does not affect receiving or playing the remote audio streams.

The difference between this method and the muteLocalAudioStream method is that the enableLocalAudio method does not capture or send any audio stream, while the muteLocalAudioStream method captures but does not send audio streams.

Issues Fixed

  • Live-broadcast profile: Delay at the client due to incorrect statistics.
  • Live-broadcast profile: Occasional crashes on some Android devices after a user repeats the process of switching roles between BROADCASTER and AUDIENCE.
  • Occasionally on some Android devices, a user hears a popping sound if the user leaves the channel at the same time another user is speaking.

v2.3.0

v2.3.0 is released on August 31, 2018.

Before Reading

  • From v2.3.0, the LiveTranscoding class is moved from the io.agora.live package to the io.agora.rtc.live package.

  • Fixed a typo in the constants.java API in v2.3.0.

    • Before:
    public static final int SOFEWARE_ENCODER = 1;
    • After:
    public static final int SOFTWARE_ENCODER = 1;
  • The security keys are improved and updated in v2.1.0. If you are using an Agora SDK version below v2.1.0 and wish to migrate to the latest version, see Token Migration Guide.

New Features

1. Notifies the user that the token expires in 30 seconds

The SDK returns the onTokenPrivilegeWillExpire callback 30 seconds before a token expires to notify the app to renew it. When this callback is received, you need to generate a new token on your server and call the renewToken method to pass the newly-generated token to the SDK.

2. Returns user-specific upstream and downstream statistics, including the bitrate, frame rate, packet loss rate and time delay

The onRemoteAudioTransportStats callback is added to provide user-specific upstream and downstream statistics, including the bitrate, frame rate, and packet loss rate. During a call or a live broadcast, the SDK triggers these callbacks once every two seconds after the user receives audio/video packets from a remote user. The callbacks include the user ID, audio bitrate at the receiver, packet loss rate, and time delay (ms).

Improvements

  • Improves the quality for one-on-one voice/video scenarios with optimized latency and smoothness, especially for areas like Southeast Asia, South America, Africa, and the Middle East.
  • Improves the audio encoder efficiency in a live broadcast to reduce user traffic while ensuring the call quality.
  • Improves the audio quality during a call or a live broadcast using the deep-learning algorithm.

Issues Fixed

  • Excessive increase in memory usage when multiple delegated hosts broadcast in the channel.
  • Occasional crashes on some Android devices.
  • Occasional crashes after interoperating with devices of other platforms for some Android devices.
  • Excessive increase in the memory usage for the host when the host frequently joins and leaves a channel that has multiple delegated hosts.
  • Occasionally, the remote user cannot hear the host when the host switches between AUDIENCE and BROADCASTER.
  • Occasionally, the destroy method does not respond after a user enables the video and joins a channel.
  • Occasional crashes on Android devices when remote users frequently join and leave the channel.
  • Occasionally, the audience cannot adjust the channel volume.
  • Occasional crashes when one of the two broadcasters mutes or disables the local audio while playing the background music.
  • Occasional crashes on some devices when preloading the sound effects.
  • Failure to enable the hardware encoder on some Android devices.
  • The host cannot receive the audio/video stream of the delegated host on some Android devices.
  • Occasional crashes on some Android devices when a user frequently changes the token.
  • Occasional inter-operational failures between SIP devices and the SDK.
  • Occasional echo issues when using a specific audio card.

API Changes

To improve your experience, we made the following changes to the APIs:

To avoid adding too many users with the same uid into the CDN publishing channel, the following API method is deleted in v2.3.0, and the return value type of addUser is changed from void to int.

  • setUser

The following API methods are deleted and no longer supported in v2.3.0. Agora provides the Recording SDK for better recording services. For more information on the Recording SDK, see Release Notes for Agora Recording SDK.

  • startRecordingService
  • stopRecordingService
  • refreshRecordingServiceStatus

The following deprecated API methods are deleted and no longer supported from v2.3.0:

  • monitorConnectionEvent
  • monitorBluetoothHeadsetEvent
  • monitorHeadsetEvent
  • setPreferHeadset
  • switchView
  • setSpeakerphoneVolume

Backward Compatibility Issues

None.

Known Issues

None.

v2.2.3

v2.2.3 is released on July 5, 2018.

Read This First

The security keys are improved and updated in v2.1.0. If you are using an Agora SDK version below v2.1.0 and wish to migrate to the latest version, see Token Migration Guide.

Issues Fixed

  • Occasional online statistics crashes.
  • The broadcaster’s voice distorts occasionally on some Android devices.
  • Occasional crashes during a live broadcast.
  • Excessive increase in the memory usage when multiple delegated hosts broadcast in the channel.
  • Receiving the onLeaveChannel callback long after a user has left the channel on some Android devices.
  • Failing to report the uid and volume of the speaker in a channel.
  • Unsteady voice volume of the broadcaster in a live broadcast.

v2.2.2

v2.2.2 is released on June 21, 2018.

Issues Fixed

  • Fixed occasional online statistics crashes.
  • Fixed occasional audio crashes on some Android devices.
  • Fixed the issue that the broadcaster’s voice distorts occasionally on some Android devices.
  • Fixed the issue of failing to report the uid and volume of the speaker in a channel.
  • Fixed the issue of receiving the onLeaveChannel callback long after a user has left the channel on some Android devices.

v2.2.1

v2.2.1 is released on May 30, 2018.

Issues Fixed

  • Occasional crashes during gaming on some Android devices.
  • The soundtrack pointer cannot be retrieved on some Android devices.
  • Occasional crashes on some Android devices.
  • The audio volume on some Android devices cannot be adjusted after a headset is plugged in.

v2.2.0

v2.2.0 is released on May 4, 2018.

New Features

1. Play the audio effect in the channel

Adds a publish parameter in the playEffect method for the remote user in the channel to hear the audio effect played locally.

If your SDK is upgraded to v2.2 from a previous version, pay attention to the functional changes of this API.

2. Deploy the proxy at the server

We provide a proxy package for enterprise users with corporate firewalls to deploy before accessing our services. See Deploying the Enterprise Proxy.

Improvements

1. Audio volume indication

Improves the enableAudioVolumeIndication method. This method once enabled, sends the audio volume indication of the speaker in its callback at set intervals, regardless of whether anyone is speaking in the channel.

2. Network quality detection during a session

To meet the customers’ need for real-time network quality detection in the channel, the onNetworkQuality method improves its data accuracy.

3. Last mile network quality detection before joining a channel

To test if the customers’ network condition can support voice or video calls before joining the channel, the onLastmileQuality callback changes the detection from a fixed bitrate to the bitrate set by the customer in the setVideoProfile method to improve data accuracy. When the network condition is unknown, the SDK triggers this callback once every two seconds.

4. Audio quality enhancement

Improves the audio quality in scenarios that involve music playback.

v2.1.3

v2.1.3 is released on April 19, 2018.

In v2.1.3, Agora updates the bitrate values of the setVideoProfile method in the Live-broadcast profile. The bitrate values in v2.1.3 stay consistent with those in v2.0.

Issues Fixed

Occasional recording failures on some phones when a user leaves a channel and turns on the built-in recording device.

v2.1.2

v2.1.2 is released on April 2, 2018.

Issues Fixed

Video freeze in DTX + AAC mode.

v2.1.1

v2.1.1 is released on March 16, 2018.

Agora has identified a critical issue in SDK v2.1. Upgrade to v2.1.1 if you are using Agora SDK v2.1.

v2.1.0

v2.1.0 is released on March 7, 2018.

New Features

1. Voice Optimization

Adds a scenario for the game chat room to reduce the bandwidth and cancel the noise with the setAudioProfile method.

2. Enhance the audio effect input from the built-in microphone

In an interactive broadcast scenario, the host can enhance the local audio effects from the built-in microphone with the setLocalVoiceEqualization and setLocalVoiceReverb methods by implementing the voice equalization and reverberation effects.

3. Online statistics query

Adds Restful APIs to check the status of the users in the channel, the channel list of a specific company, and whether the user is an audience or a host:

Improvements

Improvement Description
Video Freeze Rate Reduces the video freeze rate in the audience mode and for specific devices.
Authentication Supports a new authentication mechanism. Each legacy Dynamic Key (Channel Key) corresponds to a single privilege (for example, joining a channel), but each token in the new authentication mechanism includes all privileges (for example, joining a channel, hosting in, and stream-pushing).

Issues Fixed

  • Occasional playback noise on specific devices.
  • Occasional crackling voice playback on specific devices.
  • Occasional crashes.

v2.0.2

v2.0.2 is released on December 15, 2017, and fixes occasional audio routing issues.

v2.0 and Earlier

v2.0

v2.0 is released on December 6, 2017.

New Features

  • Supports external audio sources in the Communication and Live-broadcast profiles by adding the following API methods:

    Name Description
    setExternalAudioSource Enables the external audio source function.
    pushExternalAudioFrame Pushes the external audio frame to the Agora SDK.
  • Provides a set of RESTful APIs to ban a peer user from the server in the Communication and Live-broadcast profiles. Contact sales-us@agora.io to enable this function, if required.

  • Supports the following Android emulators: NOX, Lightning, and Xiaoyao.

Issues Fixed

  • Audio routing and Bluetooth issues.
  • Optimizes the volume balance control.

v1.14

v1.14 is released on October 20, 2017.

New Features

  • Adds the setAudioProfile method to set the audio parameters and scenarios
  • Adds the setLocalVoicePitch method to set the local voice pitch
  • Live Broadcast: Adds the setInEarMonitoringVolume method to adjust the volume of the in-ear monitor

Improvements

  • Optimizes the audio at high bitrates.
  • Live Broadcast: The audience can view the host within one second in a single-stream mode (226 ms on average, and 204 ms under good network conditions).
  • Adds the ability to reduce the bandwidth.
    • Before v1.14: If you muted the audio of a specific user, the network still sent the stream.
    • Starting from v1.14: If you mute the audio of a specific user, the network will not send the stream of the user to reduce the bandwidth.

Issues Fixed

Camera related issues on Android devices.

v1.13.1

v1.13.1 is released on September 28, 2017, and optimizes the echo issue under certain circumstances.

v1.13

v1.13 is released on September 4, 2017.

New Features

  • Adds the function to dynamically enable and disable acquiring the sound card in a live broadcast.
  • Adds the function to disable the audio playback.
  • Adds the onClientRoleChanged callback to report to the app on a user role switch between the host and the audience in a live broadcast.
  • Supports the push-stream failure callback on the server side.

Issues Fixed:

Occasional crashes on some devices.

v1.12

v1.12 is released on July 25, 2017.

New Features:

  • Adds the aes-128-ecb encryption mode in the setEncryptionMode method.
  • Adds the quality parameter in the startAudioRecording method to set the recording audio quality.
  • Adds a set of APIs for audio effect management.

Issues Fixed:

  • Android: Bluetooth issues related to audio routing.
  • Android/iOS/Mac/Windows: Occasional crashes.