Level up your Twilio API skills in TwilioQuest, an educational game for Mac, Windows, and Linux. Download Now

Menu

Expand
Rate this page:

Thanks for rating this page!

We are always striving to improve our documentation quality, and your feedback is valuable to us. How could this documentation serve you better?

4.0 Changelog: Twilio Video Android

The Twilio Programmable Video SDKs use Semantic Versioning.

4.4.0 (October 1st, 2019)

API Changes

Network Quality API

  • Implemented the Network Quality functionality for Group Rooms.
  • The Network Quality feature is disabled by default, to enable it set the ConnectOptions.Builder.enableNetworkQuality property to true when connecting to a Group Room.
    • To determine the current network quality level for your Local Participant, call LocalParticipant.getNetworkQualityLevel(). Note, this will return NETWORK_QUALITY_LEVEL_UNKNOWN if:
      • The ConnectOptions.networkQualityEnabled property was set to false
      • Using a Peer-to-Peer room
      • The network quality level has not yet been computed
    • Network Quality Level for Remote Participants will be available in a future release
    • Implementing the onNetworkQualityLevelChanged method on your LocalParticipant.Listener will allow you to receive callbacks when the network quality level changes
// Enable network quality
ConnectOptions connectOptions =
                new ConnectOptions.Builder(token)
                        .roomName(roomName)
                        .enableNetworkQuality(true)
                        .build();

// Override onNetworkLevelChanged to observe network quality level changes
LocalParticipant.Listener localParticipantListener = new LocalParticipant.Listener() {
    ...

    @Override
    public void onNetworkQualityLevelChanged(
        @NonNull LocalParticipant localParticipant,
        @NonNull NetworkQualityLevel networkQualityLevel) {}
}

// Connect to room and register listener
Room room = Video.connect(context, connectOptions, roomListener);
LocalParticipant localParticipant = room.getLocalParticipant();
localParticipant.setListener(localParticipantListener);

// Get current network quality
localParticipant.getNetworkQualityLevel();

For more information, refer to the API docs and to the Network Quality Tutorial.

Known issues

  • Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
  • Participant disconnect event can take up to 120 seconds to occur #80 #73
  • The SDK is not side-by-side compatible with other WebRTC based libraries #340
  • Codec preferences do not function correctly in a hybrid codec Group Room with the following codecs:
    • ISAC
    • PCMA
    • G722
    • VP9
  • Unpublishing and republishing a LocalAudioTrack or LocalVideoTrack might not be seen by Participants. As a result, tracks published after a Room.State.RECONNECTED event might not be subscribed to by a RemoteParticipant.
  • Using Camera2Capturer with a camera ID that does not support ImageFormat.PRIVATE capture outputs results in a runtime exception. Reference this issue for guidance on a temporary work around.

Size Report

ABI APK Size Impact
universal 22.5MB
armeabi-v7a 5MB
arm64-v8a 5.8MB
x86 6.1MB
x86_64 6.2MB

4.3.2 (September 16th, 2019)

Enhancement

  • Upgraded the Gradle plugin used to build the SDK to 3.5.0.

Known issues

  • Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
  • Participant disconnect event can take up to 120 seconds to occur #80 #73
  • The SDK is not side-by-side compatible with other WebRTC based libraries #340
  • Codec preferences do not function correctly in a hybrid codec Group Room with the following codecs:
    • ISAC
    • PCMA
    • G722
    • VP9
  • Unpublishing and republishing a LocalAudioTrack or LocalVideoTrack might not be seen by Participants. As a result, tracks published after a Room.State.RECONNECTED event might not be subscribed to by a RemoteParticipant.
  • Using Camera2Capturer with a camera ID that does not support ImageFormat.PRIVATE capture outputs results in a runtime exception. Reference this issue for guidance on a temporary work around.

Size Report

ABI APK Size Impact
universal 22.5MB
armeabi-v7a 5MB
arm64-v8a 5.8MB
x86 6.1MB
x86_64 6.2MB

4.3.1 (August 23rd, 2019)

Bug Fixes

  • Fixed updating CameraCapturer.State when error occurs.

Known issues

  • Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
  • Participant disconnect event can take up to 120 seconds to occur #80 #73
  • The SDK is not side-by-side compatible with other WebRTC based libraries #340
  • Codec preferences do not function correctly in a hybrid codec Group Room with the following codecs:
    • ISAC
    • PCMA
    • G722
    • VP9
  • Unpublishing and republishing a LocalAudioTrack or LocalVideoTrack might not be seen by Participants. As a result, tracks published after a Room.State.RECONNECTED event might not be subscribed to by a RemoteParticipant.
  • Using Camera2Capturer with a camera ID that does not support ImageFormat.PRIVATE capture outputs results in a runtime exception. Reference this issue for guidance on a temporary work around.

Size Report

ABI APK Size Impact
universal 22.5MB
armeabi-v7a 5MB
arm64-v8a 5.8MB
x86 6.1MB
x86_64 6.2MB

4.3.0 (August 5th, 2019)

Dominant Speaker Detection API

The Dominant Speaker Detection API sends events to your application every time the dominant speaker changes. You can use those events to improve the end user's experience by, for example, highlighting which participant is currently talking.

The Dominant Speaker Detection API is only available for Group Rooms. To enable dominant speaker detection, set the ConnectOptions.dominantSpeakerEnabled property to true. Use Room.getDominantSpeaker() to determine the current dominant speaker. Implement Room.Listener.onDominantSpeakerChanged() method to receive callbacks when the dominant speaker changes.

For more information, refer to the API docs and to the dominant speaker tutorial

This release is available here

 ConnectOptions connectOptions =
                new ConnectOptions.Builder(token)
                        .roomName(roomName)
                        .enableDominantSpeaker(true)
                        .build();
Room room = Video.connect(context, connectOptions, roomListener);

@Override
void onDominantSpeakerChanged(
                @NonNull Room room, @Nullable RemoteParticipant remoteParticipant) {
                // Handle dominant speaker change
        }

Known issues

  • Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
  • Participant disconnect event can take up to 120 seconds to occur #80 #73
  • The SDK is not side-by-side compatible with other WebRTC based libraries #340
  • Codec preferences do not function correctly in a hybrid codec Group Room with the following codecs:
    • ISAC
    • PCMA
    • G722
    • VP9
  • Unpublishing and republishing a LocalAudioTrack or LocalVideoTrack might not be seen by Participants. As a result, tracks published after a Room.State.RECONNECTED event might not be subscribed to by a RemoteParticipant.

Size Report

ABI APK Size Impact
universal 22.7MB
armeabi-v7a 5MB
arm64-v8a 5.9MB
x86 6.2MB
x86_64 6.3MB

4.2.0 (May 13th, 2019)

Improvements

  • Added field enableAutomaticSubscription to ConnectOptions. enableAutomaticSubscription toggles automatic track subscription. If set to false, the LocalParticipant will receive notifications of track publish events, but will not automatically subscribe to them. If set to true, the LocalParticipant will automatically subscribe to tracks as they are published. If unset, the default is true. Note: This feature is only available for Group Rooms. Toggling the flag in a P2P room does not modify subscription behavior.

Known issues

  • Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
  • Participant disconnect event can take up to 120 seconds to occur #80 #73
  • The SDK is not side-by-side compatible with other WebRTC based libraries #340
  • Codec preferences do not function correctly in a hybrid codec Group Room with the following codecs:
    • ISAC
    • PCMA
    • G722
    • VP9
  • Unpublishing and republishing a LocalAudioTrack or LocalVideoTrack might not be seen by Participants. As a result, tracks published after a Room.State.RECONNECTED event might not be subscribed to by a RemoteParticipant.

Size Report

ABI APK Size Impact
universal 22.5MB
armeabi-v7a 5MB
arm64-v8a 5.8MB
x86 6.1MB
x86_64 6.2MB

4.1.2 (April 26th, 2019)

Bug Fixes

  • Fixed stuck aspect ratio when switching orientations with ScreenCapturer.
  • Fixed a bug where media reconnection might fail when the loopback interface is mistakenly chosen as a preferred network interface.

Known issues

  • Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
  • Participant disconnect event can take up to 120 seconds to occur #80 #73
  • The SDK is not side-by-side compatible with other WebRTC based libraries #340
  • Codec preferences do not function correctly in a hybrid codec Group Room with the following codecs:
    • ISAC
    • PCMA
    • G722
    • VP9
  • Unpublishing and republishing a LocalAudioTrack or LocalVideoTrack might not be seen by Participants. As a result, tracks published after a Room.State.RECONNECTED event might not be subscribed to by a RemoteParticipant.

Size Report

ABI APK Size Impact
universal 22.5MB
armeabi-v7a 5MB
arm64-v8a 5.8MB
x86 6.1MB
x86_64 6.2MB

4.1.1 (April 11th, 2019)

Improvements

  • Fixed various Lint errors / warnings.

Known issues

  • Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
  • Participant disconnect event can take up to 120 seconds to occur #80 #73
  • The SDK is not side-by-side compatible with other WebRTC based libraries #340
  • Codec preferences do not function correctly in a hybrid codec Group Room with the following codecs:
    • ISAC
    • PCMA
    • G722
    • VP9
  • Unpublishing and republishing a LocalAudioTrack or LocalVideoTrack might not be seen by Participants. As a result, tracks published after a Room.State.RECONNECTED event might not be subscribed to by a RemoteParticipant.

Size Report

ABI APK Size Impact
universal 22.5MB
armeabi-v7a 5MB
arm64-v8a 5.8MB
x86 6.1MB
x86_64 6.2MB

4.1.0 (April 3rd, 2019)

Improvements

  • Added the AudioSink interface. When added to a LocalAudioTrack or RemoteAudioTrack, developers will receive a callback with the raw audio byte buffer from each audio frame. The example below demonstrates adding an AudioSink to a LocalAudioTrack.
AudioSink audioSink = (audioSample, encoding, sampleRate, channels) -> {
    Log.v("AudioSink", "Received audio frame");
};
localAudioTrack.addSink(audioSink);

The AudioSink can then be removed with the following code.

localAudioTrack.removeSink(audioSink);

Known issues

  • Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
  • Participant disconnect event can take up to 120 seconds to occur #80 #73
  • The SDK is not side-by-side compatible with other WebRTC based libraries #340
  • Codec preferences do not function correctly in a hybrid codec Group Room with the following codecs:
    • ISAC
    • PCMA
    • G722
    • VP9
  • Unpublishing and republishing a LocalAudioTrack or LocalVideoTrack might not be seen by Participants. As a result, tracks published after a Room.State.RECONNECTED event might not be subscribed to by a RemoteParticipant.

Size Report

ABI APK Size Impact
universal 22.4MB
armeabi-v7a 5MB
arm64-v8a 5.8MB
x86 6.1MB
x86_64 6.2MB

4.0.2 (March 28th, 2019)

Bug Fixes

  • Fixed bug in Camera2Capturer.switchCamera which resulted in onCameraSwitched being invoked with a null camera ID #379

Known issues

  • Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
  • Participant disconnect event can take up to 120 seconds to occur #80 #73
  • The SDK is not side-by-side compatible with other WebRTC based libraries #340
  • Codec preferences do not function correctly in a hybrid codec Group Room with the following codecs:
    • ISAC
    • PCMA
    • G722
    • VP9
  • Unpublishing and republishing a LocalAudioTrack or LocalVideoTrack might not be seen by Participants. As a result, tracks published after a Room.State.RECONNECTED event might not be subscribed to by a RemoteParticipant.

Size Report

ABI APK Size Impact
universal 22.4MB
armeabi-v7a 5MB
arm64-v8a 5.8MB
x86 6.1MB
x86_64 6.2MB

4.0.1 (March 19th, 2019)

Bug Fixes

  • Room.getStats() will raise a callback to the provided StatsObserver if called while Room.getState() == Room.State.RECONNECTING.
  • Fixed a crash related to stats gathering which could occur when insights reporting is enabled.
  • Fixed a crash related to media state summarization which could occur when disconnecting from a Room.
  • Fixed a crash related to stats gathering which could occur in the media monitor component.

Known issues

  • Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
  • Participant disconnect event can take up to 120 seconds to occur #80 #73
  • The SDK is not side-by-side compatible with other WebRTC based libraries #340
  • Codec preferences do not function correctly in a hybrid codec Group Room with the following codecs:
    • ISAC
    • PCMA
    • G722
    • VP9
  • Unpublishing and republishing a LocalAudioTrack or LocalVideoTrack might not be seen by Participants.

Size Report

ABI APK Size Impact
universal 22.4MB
armeabi-v7a 5MB
arm64-v8a 5.8MB
x86 6.1MB
x86_64 6.2MB

4.0.0 (February 22, 2019)

Improvements

  • Added new state Reconnecting to Room.State and new callbacks onReconnecting, onReconnected to Room.Listener. When the LocalParticipant experiences a network interruption in signaling or media, the room will transition to Reconnecting and Room.Listener will notify the developer of this new state via onReconnecting. If the connection is successfully restored, Room.Listener will notify the developer via onReconnected. However, if the connection could not be reestablished Room.Listener will notify the developer via onDisconnected.
  • Added and updated public API nullability annotations.
  • Changed OpusCodec.NAME and IsacCodec.NAME to lowercase

Known issues

  • Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
  • Participant disconnect event can take up to 120 seconds to occur #80 #73
  • The SDK is not side-by-side compatible with other WebRTC based libraries #340
  • Codec preferences do not function correctly in a hybrid codec Group Room with the following codecs:
    • ISAC
    • PCMA
    • G722
    • VP9
  • Unpublishing and republishing a LocalAudioTrack or LocalVideoTrack might not be seen by Participants.

Size Report

ABI APK Size Impact
universal 22.3MB
armeabi-v7a 5MB
arm64-v8a 5.7MB
x86 6MB
x86_64 6.2MB
Rate this page:

Need some help?

We all do sometimes; code is hard. Get help now from our support team, or lean on the wisdom of the crowd browsing the Twilio tag on Stack Overflow.