Skip to contentSkip to navigationSkip to topbar
Rate this page:
On this page

Changelog: Twilio Video Android 1.x


(warning)

Warning

This page is for reference only. We are no longer onboarding new customers to Programmable Video. Existing customers can continue to use the product until December 5, 2024(link takes you to an external page).
We recommend migrating your application to the API provided by our preferred video partner, Zoom. We've prepared this migration guide(link takes you to an external page) to assist you in minimizing any service disruption.

Deprecation Notice - Versions 1.0.0-beta10 and earlier
Please note that older versions of the Programmable Video Android SDK prior to 1.0.0-beta11 are deprecated and will stop working on September 13, 2018. Please make sure you're using the latest version of the library in your apps, and make sure your customers update their apps by that date. For more information please review the knowledge base(link takes you to an external page).
Compatibility Notice - All versions
Please note that all 1.x versions are incompatible with Firefox 63+ in a Peer-to-Peer Room. For more information please review the Github Issue(link takes you to an external page).

The Twilio Programmable Video SDKs use Semantic Versioning(link takes you to an external page).


1.3.15 (June 11th, 2018)

1315-june-11th-2018 page anchor

Improvements

  • Updated Android Gradle Plugin version to 3.1.0 and Gradle version to 4.4
  • Initial Connect message now includes Client version metadata.

Bug Fixes

  • Fixed a bug where the SDK hangs if DNS resolution fails and the user does not initiate disconnect.
  • The signaling Client no longer logs access tokens.
  • Fixed a rare internal SDK teardown crash.
  • Resolved an issue where the signaling Client could send too many UPDATE messages, or use too many CPU cycles and disconnect from a Room.

Known issues


1.3.14 (March 26th, 2018)

1314-march-26th-2018 page anchor

Improvements

  • Improved internal logic for retrieving ice servers and resolving outbound DNS.

Bug Fixes

  • Fixed a bug where onDisconnected was not getting invoked due to a race condition between a network handover and a user initiated disconnect call.

Known issues


1.3.13 (March 5, 2018)

1313-march-5-2018 page anchor

Bug Fixes

Known issues


1.3.12 (February 23, 2018)

1312-february-23-2018 page anchor

Bug Fixes

  • ICE URIs using the turns scheme are now supported. The SDK will now use turns by default if turn is enabled for your Room.
  • ICE URIs using the stuns scheme are now supported.
  • Resolved a condition where ICE candidates might not be applied in Peer-to-Peer Rooms.

Known issues


1.3.11 (February 7th, 2018)

1311-february-7th-2018 page anchor

Improvements

  • Updated targetSdkVersion to 27
  • Updated buildToolsVersion to 27.0.3
  • Updated Android Gradle plugin to to 3.0.1

Known issues


1.3.10 (January 24th, 2018)

1310-january-24th-2018 page anchor

Improvements

  • Refactor internal reference counting of internal MediaFactory.

Bug Fixes

  • Don't publish Ice Candidate stats unless an active pair is present.

Known issues


1.3.9 (December 1st, 2017)

139-december-1st-2017 page anchor

Improvements

  • Added version to javadoc title, header, and bottom.

Known issues


1.3.8 (November 28th, 2017)

138-november-28th-2017 page anchor

Improvements

  • Updated javadoc to include note about VideoView#setVideoScaleType . Scale type will only be applied to dimensions defined as WRAP_CONTENT or a custom value. Setting a width or height to MATCH_PARENT results in the video being scaled to fill the maximum value of the dimension.
  • Add warning log when calling setVideoScaleType when width or height is set to MATCH_PARENT

Known issues


1.3.7 (November 10th, 2017)

137-november-10th-2017 page anchor

Improvements

  • Twilio CDN no longer hosts the Video Android aar artifacts or Javadocs

Accessing Artifacts

accessing-artifacts page anchor

If you are downloading Video Android SDK artifacts from the Twilio CDN then there is one options available moving forward.

All Javadocs back to 1.0.0-preview1 are now hosted on Github Pages(link takes you to an external page) with the following URL scheme. https://twilio.github.io/twilio-video-android/docs/{version}

Bug Fixes

  • Fixed NPE when calling takePicture on CameraCapturer .

Known issues


1.3.6 (October 31st, 2017)

136-october-31st-2017 page anchor

Improvements

  • Include javadoc and sources jar with artifacts published to Bintray.
  • Updated to Build Tools 26.0.2
  • Support annotations and Relinker no longer exposed at compile time

Known issues


1.3.5 (October 24th, 2017)

135-october-24th-2017 page anchor

Improvements

  • Improved threading contract.

Known issues


1.3.4 (October 18th, 2017)

134-october-18th-2017 page anchor

Bug Fixes

Known issues


1.3.3 (October 9th, 2017)

133-october-9th-2017 page anchor

Improvements

  • Internal library update

Known issues


1.3.2 (September 21, 2017)

132-september-21-2017 page anchor

Improvements

Known issues


1.3.1 (September 14, 2017)

131-september-14-2017 page anchor

Improvements

  • Fixed case on some devices where CameraCapturer incorrectly reported a failure to close the camera.
  • Improved echo cancellation on Nexus 6P and Nexus 6 by enabling hardware echo canceller and disabling OpenSL ES.

Known issues


1.3.0 (August 17th, 2017)

130-august-17th-2017 page anchor

Features

  • Added static method CameraCapturer.isSourceAvailable that validates if a camera source is available on the device. This method is used when creating a CameraCapturer instance and when calling CameraCapturer#switchCamera to validate that a source can be used for capturing frames.

Improvements

  • Added javadoc to Participant.Listener , ScreenCapturer.Listener , VideoCapturer.Listener , and VideoRenderer.Listener .

Bug Fixes

  • Fixed a bug where multiple participants adding/removing tracks at the same time was not handled properly.

Known issues


1.2.2 (July 27, 2017)

122-july-27-2017 page anchor

Improvements

  • Calling Participant#setListener with null is no longer allowed.

Bug Fixes

  • Removed reference to LocalMedia in CameraCapturer javadoc.
  • Fixed race condition that could result in track events not being raised.

Known issues


1.2.1 (July 14, 2017)

121-july-14-2017 page anchor

Improvements

  • Improved safety of asynchronous operations in native core.

Known issues


1.2.0 (July 12, 2017)

120-july-12-2017 page anchor

Features

  • The SDK now uses TLS 1.2 in favor of TLS 1.0 to connect to Twilio's servers.

Improvements

  • Deprecated LocalParticipant#release . This method is not meant to be called and is now a no-op until it is removed in 2.0.0-preview1 release. #132(link takes you to an external page)
  • Added more checks and logging to CameraCapturer to help identify cases when the camera service cannot be reached. #126(link takes you to an external page)
  • Changed getSupportedFormats for CameraCapturer , ScreenCapturer , and Camera2Capturer to be synchronized .

Bug Fixes

Known issues


1.1.1 (July 10, 2017)

111-july-10-2017 page anchor

Bug Fixes

  • Fixed bug in VideoConstraints logic where valid VideoCapturer video formats were ignored due to very strict checking of aspect ratios in WebRTC.
  • Fixed bug in Logger.java where setting certain LogLevel's did not print error logs .
  • Fixed bug in LocalVideoTrack where FPS check was incorrectly marking a constraint as incompatible. #127(link takes you to an external page)

Known issues


1.1.0 (June 27, 2017)

110-june-27-2017 page anchor

Improvements

  • Moved signaling network traffic to port 443.
  • Added Camera2Capturer . Camera2Capturer uses android.hardware.camera2 to implement a VideoCapturer . Camera2Capturer does not yet implement takePicture and the ability to modify camera parameters once Camera2Capturer is running.

Create LocalVideoTrack with Camera2Capturer


_17
// Check if device supports Camera2Capturer
_17
if (Camera2Capturer.isSupported(context)) {
_17
// Use CameraManager.getCameraIdList() for a list of all available camera IDs
_17
String cameraId = "0";
_17
Camera2Capturer.Listener camera2Listener = new Camera2Capturer.Listener() {
_17
@Override
_17
public void onFirstFrameAvailable() {}
_17
_17
@Override
_17
public void onCameraSwitched(String newCameraId) {}
_17
_17
@Override
_17
public void onError(Camera2Capturer.Exception exception) {}
_17
}
_17
Camera2Capturer camera2Capturer = new Camera2Capturer(context, cameraId, camera2Listener);
_17
LocalVideoTrack = LocalVideoTrack.create(context, true, camera2Capturer);
_17
}

  • This release adds Insights statistics collection, which reports RTP quality metrics back to Twilio. In the future, these statistics will be included in customer-facing reports visible in the Twilio Console. Insights collection is enabled by default, if you wish to disable it reference the following snippet.


    _10
    ConnectOptions connectOptions = new ConnectOptions.Builder(token)
    _10
    .enableInsights(false)
    _10
    .build();

Bug Fixes

  • Improved signaling connection retry logic. In the case of an error, the SDK will continue to retry with a backoff timer when errors are encountered.
  • Fixed a bug in network handoff scenarios where the SDK was not handling the race condition if network lost or network changed event is received when a network changed event is being processed.
  • Fixed bug where audio and video tracks were not available after onParticipantDisconnected was invoked #125(link takes you to an external page)

Known issues


1.0.2 (June 6, 2017)

102-june-6-2017 page anchor

Bug Fixes

Known issues


1.0.1 (May 16, 2017)

101-may-16-2017 page anchor

Improvements

  • Improved internal native Room operations.
  • Improved ScreenCapturer performance by enabling capturing to a texture.
  • Added new error code for case when participant gets disconnected because of duplicate participant joined the room.

Bug Fixes

Known issues


1.0.0 (April 26, 2017)

100-april-26-2017 page anchor

We've promoted 1.0.0-beta17 to 1.0.0 as our first General Availability release.

Known issues


1.0.0-beta17 (April 26, 2017)

100-beta17-april-26-2017 page anchor

Improvements

  • Replaced LocalMedia class with Track factories for LocalVideoTrack and LocalAudioTrack

Working with LocalVideoTrack and LocalAudioTrack before 1.0.0-beta17


_10
// Create LocalMedia
_10
LocalMedia localMedia = LocalMedia.create(context);
_10
LocalVideoTrack localVideoTrack = localMedia.addVideoTrack(true, videoCapturer);
_10
LocalAudioTrack localAudioTrack = localMedia.addAudioTrack(true);
_10
_10
...
_10
_10
// Destroy LocalMedia to free native memory resources
_10
localMedia.release();

Working with LocalVideoTrack and LocalAudioTrack now


_10
// Create Tracks
_10
LocalVideoTrack localVideoTrack = LocalVideoTrack.create(context, true, videoCapturer);
_10
LocalAudioTrack localAudioTrack = LocalAudioTrack.create(context, true);
_10
_10
...
_10
_10
// Destroy Tracks to free native memory resources
_10
localVideoTrack.release();
_10
localAudioTrack.release();

  • The ConnectOptions.Builder now takes a List<LocalAudioTrack> and List<LocalVideoTrack> instead of LocalMedia

Providing LocalVideoTrack and LocalAudioTrack before 1.0.0-beta17


_10
LocalMedia localMedia = LocalMedia.create(context);
_10
LocalVideoTrack localVideoTrack = localMedia.addVideoTrack(true, videoCapturer);
_10
LocalAudioTrack localAudioTrack = localMedia.addAudioTrack(true);
_10
_10
ConnectOptions connectOptions = new ConnectOptions.Builder(accessToken)
_10
.roomName(roomName)
_10
.localMedia(localMedia)
_10
.build();
_10
VideoClient.connect(context, connectOptions, roomListener);

Providing LocalVideoTrack and LocalAudioTrack now


_11
List<LocalVideoTrack> localAudioTracks =
_11
new ArrayList<LocalVideoTrack>(){{ add(localVideoTrack); }};
_11
List<LocalAudioTrack> localVideoTracks =
_11
new ArrayList<LocalAudioTrack>(){{ add(localAudioTrack); }};
_11
_11
ConnectOptions connectOptions = new ConnectOptions.Builder(accessToken)
_11
.roomName(roomName)
_11
.audioTracks(localAudioTracks)
_11
.videoTracks(localVideoTracks)
_11
.build();
_11
VideoClient.connect(context, connectOptions, roomListener);

  • Methods getVideoTracks() and getAudioTracks() moved from LocalMedia and Media to LocalParticipant and Participant
  • Removed Media from Participant and migrated Media.Listener to Participant.Listener . AudioTrack and VideoTrack events are raised with the corresponding Participant instance. This allows you to create tracks while connected to a Room without immediately adding them to the connected Room
  • Improved hardware accelerated decoding through the use of surface textures.
  • Added textureId and samplingMatrix fields to I420Frame so implementations of VideoRenderer can extract YUV data from frame represented as texture.
  • Exposed org.webrtc.YuvConverter to facilitate converting a texture to an in memory YUV buffer.
  • Invoke ScreenCapturer.Listener callbacks on the thread ScreenCapturer is created on.
  • Fixed an issue where the ConnectivityReceiver was causing a reconnect when connecting to a Room for the first time occasionally leading to a 53001 error onConnectFailure response.
  • Room#getParticipants returns List<Participant> instead of Map<String, Participant> .

Bug Fixes

Known issues


1.0.0-beta16 (April 10, 2017)

100-beta16-april-10-2017 page anchor

Improvements

  • Added enum VideoFrame.RotationAngle to ensure VideoFrame objects are constructed with valid orientation values.
  • Updated CameraCapturer to be powered by latest WebRTC camera capturer.
  • Updated CameraCapturer to allow scheduling a picture to be taken while the capturer is not running.

Bug Fixes

Known issues


1.0.0-beta15 (March 30, 2017)

100-beta15-march-30-2017 page anchor

Improvements

  • Upgraded to WebRTC 57.
  • Renaming VideoClient class to Video .

Known issues


1.0.0-beta14 (March 28, 2017)

100-beta14-march-28-2017 page anchor

Improvements

  • Simplified internal data structures that populate StatsReport .

Bug Fixes

  • Fixed teardown crash that occurred in component that fetches ice servers.

Known issues


1.0.0-beta13 (March 22, 2017)

100-beta13-march-22-2017 page anchor

Improvements

  • Decreased Room connection time by establishing the signaling connection earlier in the process.
  • Removed the final case where we resolve localhost. This also improves connection time to your first Room.

Bug Fixes

  • Fixed a regression in 1.0.0-beta12 where a track added event was not raised when the trackId was reused. #83(link takes you to an external page)
  • Fixed crash in Room#disconnect when releasing Participant media
  • Resolved memory corruption issues which could occur in multi-party scenarios.
  • Fixed a crash which could occur in signaling stack

Known issues


1.0.0-beta12 (March 14, 2017)

100-beta12-march-14-2017 page anchor

Improvements

  • Made VideoClient an abstract class.
  • We've begun formalizing our error codes. They are divided up into Signaling (530xx), Room (531xx), Participant (532xx), Track (533xx), Media (534xx), Configuration (535xx), and Access Token (201xx) subranges. Instances of TwilioException will now carry a numeric code belonging to one of these ranges, an error message, and an optional error explanation.
  • Implemented a policy for applying VideoConstraints . Adding a LocalVideoTrack with no constraints, results in LocalMedia applying a set of default constraints based on the closest supported VideoFormat to 640x480 at 30 FPS. Adding a LocalVideoTrack with custom constraints, results in LocalMedia checking if the constraints are compatible with the given VideoCapturer before applying. If the constraints are not compatible LocalMedia applies default constraints. #68(link takes you to an external page)

Bug Fixes

Known issues


1.0.0-beta11 (March 6, 2017)

100-beta11-march-6-2017 page anchor

Improvements

  • Moved connect from instance method to static method on VideoClient class. Calling the new static connect method requires a Context in addition to ConnectOptions and a Room.Listener . VideoClient is no longer an object that can be instantiated and an instance is no longer required to connect to a Room .
  • Moved access token parameter from VideoClient constructor to ConnectOptions.Builder constructor.

Connecting to a Room before 1.0.0-beta11


_10
// Create VideoClient
_10
VideoClient videoClient = new VideoClient(context, accessToken);
_10
ConnectOptions connectOptions = new ConnectOptions.Builder()
_10
.roomName(roomName)
_10
.localMedia(localMedia)
_10
.build();
_10
videoClient.connect(connectOptions, roomListener);

Connecting to a Room with static connect


_10
ConnectOptions connectOptions = new ConnectOptions.Builder(accessToken)
_10
.roomName(roomName)
_10
.localMedia(localMedia)
_10
.build();
_10
VideoClient.connect(context, connectOptions, roomListener);

Bug Fixes

  • Fixed crash when disconnecting from a Room on HTC 10.
  • Fixed crash caused by removing a track before calling Room#disconnect .
  • Use a certificate bundle to validate SSL certificates on the signaling connection.
  • Improved compatibility with Group Rooms and track added and removed events.

Known issues


1.0.0-beta10 (February 24, 2017)

100-beta10-february-24-2017 page anchor

Improvements

  • Network handoff, and subsequent connection renegotiation is now supported for IPv4 networks.

Bug Fixes

Known issues


1.0.0-beta9 (February 15, 2017)

100-beta9-february-15-2017 page anchor

Bug Fixes

  • Fixed immediate disconnect when using custom ICE servers

Known issues


1.0.0-beta8 (February 8, 2017)

100-beta8-february-8-2017 page anchor

Features

  • Added an isRecording method to Room , and callbacks to RoomListener . Please note that recording is only available in our Group Rooms developer preview. isRecording will always return false in a P2P Room.

Bug Fixes

  • Fixed camera freeze when using CameraCapturer#updateCameraParameters API #54
  • Fixed crash when caused by calling getStats() immediately after disconnecting from Room
  • Fixed heap corruption on HTC 10
  • Fixed memory leaks parsing signaling messages
  • Attempt ICE restarts when a PeerConnection fails

Known issues


1.0.0-beta7 (February 3, 2017)

100-beta7-february-3-2017 page anchor

Improvements

  • Clarified documentation for LocalMedia#addAudioTrack enabled parameter

Bug Fixes

Known issues


1.0.0-beta6 (January 18, 2017)

100-beta6-january-18-2017 page anchor

Bug Fixes

  • Fixed black frames being rendered after device is rotated.
  • Fixed crash in EglBaseProvider .

Known issues


1.0.0-beta5 (December 14, 2016)

100-beta5-december-14-2016 page anchor

New features

  • Upgraded to WebRTC 55.
  • Upgraded to NDK r12b.
  • Improved quickstart(link takes you to an external page) README.
  • Added a getStats() method to Room that builds a StatsReport with metrics for all the audio and video tracks being shared to a Room .
  • Improved hardware accelerated decoding through the use of surface textures.
  • Standardized error messages and codes for a Room .
  • Changed VideoException to TwilioException .

Bug Fixes

  • Fixed picture orientation bug for takePicture .
  • PictureListener callbacks are invoked on the calling thread of takePicture .
  • Reduced previously high decoding times for Nexus 9.

Known issues


1.0.0-beta4 (November 23, 2016)

100-beta4-november-23-2016 page anchor

New features

  • Added new API to CameraCapturer for taking a picture.
  • Quickstart has been updated to demonstrate the use of APK splits to reduce APK size.

Known issues

  • IPv6 is not fully supported.
  • Network handoff, and subsequent connection renegotiation is not supported.
  • VP8 is the only supported codec #71(link takes you to an external page)
  • On Nexus 9 device, intermittent high decoding times results in delayed video.
  • Participant identities with unicode characters are not supported
  • The SDK is not side-by-side compatible with other WebRTC based libraries #340(link takes you to an external page)
  • In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377(link takes you to an external page)

1.0.0-beta3 (November 2, 2016)

100-beta3-november-2-2016 page anchor

New features

  • Added new API to CameraCapturer for providing custom Camera.Parameters .
  • Added isScreencast() method to VideoCapturer . This indicates if a capturer is providing screen content and affects any scaling attempts made while media is flowing.

Bug fixes

  • Fixed crashes when RECORD_AUDIO and CAMERA permission are not granted. LocalMedia will now return null when attempting to add a LocalAudioTrack without RECORD_AUDIO permission. CameraCapturer will log an error and provide an error code via a new CameraCapturer.Listener when trying to capture video without CAMERA permission.

Known issues


1.0.0-beta2 (October 26, 2016)

100-beta2-october-26-2016 page anchor

New features

  • Removed dependency on AccessManager in VideoClient constructor. Only a context and access token are required to create a VideoClient .
  • Added an updateToken method to VideoClient that allows for an access token to be updated in case it has expired

Bug fixes

  • Fixed crashes on x86 and x86_64 devices

Known issues


1.0.0-beta1 (October 11, 2016)

100-beta1-october-11-2016 page anchor

New features

  • Added preliminary support for network handover while connected to a Room

Bug fixes

  • Provide a release() method on the I420Frame object allowing developers to free native memory once they are done using the frame when implementing their own custom renderers

Known issues


1.0.0-preview2 (September 23, 2016)

100-preview2-september-23-2016 page anchor

New features

  • Added support for AudioOptions
  • Upgraded to Android Nougat from Marshmallow

Known issues

  • IPv6 is not fully supported
  • Network handoff, and subsequent connection renegotiation is not supported
  • Resource leak when implementing custom VideoRenderer
  • VP8 is the only supported codec #71(link takes you to an external page)
  • Using x86 or x86_64 devices results in a crash
  • Participant identities with unicode characters are not supported
  • The SDK is not side-by-side compatible with other WebRTC based libraries #340(link takes you to an external page)
  • In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377(link takes you to an external page)

1.0.0-preview1 (September 19, 2016)

100-preview1-september-19-2016 page anchor

New features

  • Adopting Room based communications model. The invite model has been completely removed

Bug fixes

  • First developer preview release

Known issues

  • IPv6 is not fully supported
  • Network handoff, and subsequent connection renegotiation is not supported
  • Resource leak when implementing custom VideoRenderer
  • VP8 is the only supported codec #71(link takes you to an external page)
  • Using x86 or x86_64 devices results in a crash
  • Participant identities with unicode characters are not supported
  • The SDK is not side-by-side compatible with other WebRTC based libraries #340(link takes you to an external page)
  • In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377(link takes you to an external page)

Rate this page: