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?

Changelog

Welcome to Programmable Voice Android SDK

Twilio Programmable Voice SDKs allow you to add voice-over-IP (VoIP) calling into your native Android applications. See Android Getting Started Guide to get started.

Please note, Programmable Voice SDKs use Semantic Versioning

4.x is the latest release of Programmable Voice SDKs. If you are using an older version, Twilio recommends upgrading to 4.x as soon as possible.

Support for 3.x will cease Jul 1st, 2020.This branch will only receive fixes for critical issues. Check this guide when planning your migration to 4.x.

Support for 2.x will cease Jan 1st, 2020.This branch will only receive fixes for critical issues. Check this guide when planning your migration to 3.x.

4.1.0

July 12th, 2019

New Features

Max Average Bandwidth API

By default, Opus codec is set up with a bitrate of around 32kbps (40-50kbps on the wire). With this release, you are able to set a custom max average bitrate transmission to better control how much bandwidth your VoIP application should use. See RFC-7587 7.1 for information about Max Average Bitrate.

The main purpose of this API is to set a lower max average bitrate to minimise bandwidth usage. This is particularly useful in deployments where bandwidth is a premium. Where bandwidth is not of concern, you do not need to use this API.

Max Average Bitrate can be set to as low as 6,000bps and as high as 51,000bps. Values outside this range are ignored and the default Opus operation mode is used. See API Docs for more information.

As would be expected, lowering the max average bitrate impacts audio quality. We don’t recommend setting max average bitrate to a value below 8,000bps. On the other hand, setting values over 32,000bps will have negligible audio quality improvements.

For example, to set a new max average bitrate to 16,000bps:

ConnectOptions connectOptions = new ConnectOptions.Builder(accessToken)
                        .params(params)
                        .preferAudioCodecs(Arrays.asList( new OpusCodec(16000)))
                        .build();
Call call = Voice.connect(VoiceActivity.this, connectOptions, callListener);

Other Enhancements

  • Programmable Voice Android SDK transmits data for VoIP calls and for Insights. With this release, we have reduced Insights related data consumption by around 25%. This was accomplished by reducing the events reporting interval.
  • The SDK now reports ice-candidate events to Insights. These events are raised when OnIceCandidate is called on the PeerConnection.

Known Issues

  • Restrictive networks may fail unless ICE servers are provided via ConnectOptions.Builder.iceOptions(...) or AcceptOptions.Builder.iceOptions(...). ICE servers can be obtained from Twilio Network Travarsal Service.
  • Occasional native crash in AsyncTask of registration/unregistration and event publishing. The crash has only been observed on API 18 devices and results from a thread safety bug in Android. Similar crashes have been reported in the popular networking library OkHttp #1520 #1338. If this bug is impacting your applications, please open an issue on our quickstart and we will investigate potential fixes.

Library Size Report

ABI App Size Increase
universal 14.7MB
armeabi-v7a 3.3MB
arm64-v8a 3.8MB
x86 3.9MB
x86_64 4MB

4.0.0

June 28th, 2019

New Features

Reconnecting State API

This release introduces the new Reconnecting State API. This API adds a new state RECONNECTING to Call.State and two new Call.Listener() callbacks, onReconnecting(...) and onReconnected(...).

Call reconnection capability has been available since SDK 3.0. For example, if a call is established over a wifi network and the wifi network becomes unavailable, the SDK will automatically switch the call over to the next available network.

This release adds the reconnection related callbacks. onReconnecting(...) indicates when a call is being reconnected due to a network disruption or network switch over and onReconnected(...) is called once the call has been re-connected. You can use this information to provide intuitive feedback to your App user when a reconnection is taking place.

Migration Guide

Migrating from 3.x is very simple. Please refer to our migration guide for more information.

Known Issues

  • Restrictive networks may fail unless ICE servers are provided via ConnectOptions.Builder.iceOptions(...) or AcceptOptions.Builder.iceOptions(...). ICE servers can be obtained from Twilio Network Travarsal Service.
  • Occasional native crash in AsyncTask of registration/unregistration and event publishing. The crash has only been observed on API 18 devices and results from a thread safety bug in Android. Similar crashes have been reported in the popular networking library OkHttp #1520 #1338. If this bug is impacting your applications, please open an issue on our quickstart and we will investigate potential fixes.

Library Size Report

ABI App Size Increase
universal 14.7MB
armeabi-v7a 3.3MB
arm64-v8a 3.8MB
x86 3.9MB
x86_64 4MB

3.3.0

June 26th, 2019

Enhancements

  • Insights events reconnecting and reconnected in the connection group are now documented in the Javadoc for the Call class.
  • CLIENT-6218 Insights events 53001/Signaling connection disconnected and 53405/Media connection failed in the connection group that are raised when attempting to reconnect are now raised with Insights level "warning". Previously, they were raised with level "error".
  • CLIENT-6257 Added AddressIncompleteException to indicate that the number of the callee is malformed.
Error Code Error Message
31484 Address Incomplete

Bug Fixes

  • CLIENT-6205 Fixed an issue where a 31408/Request Timeout would result in a 31005/Connection error

Known Issues

  • CLIENT-4943 Restrictive networks may fail unless ICE servers are provided via ConnectOptions.Builder.iceOptions(...) or AcceptOptions.Builder.iceOptions(...). ICE servers can be obtained from Twilio Network Travarsal Service.
  • CLIENT-5242 Occasional native crash in AsyncTask of registration/unregistration and event publishing. The crash has only been observed on API 18 devices and results from a thread safety bug in Android. Similar crashes have been reported in the popular networking library OkHttp #1520 #1338. If this bug is impacting your applications, please open an issue on our quickstart and we will investigate potential fixes.

Library Size Report

ABI App Size Increase
universal 14.7MB
armeabi-v7a 3.3MB
arm64-v8a 3.8MB
x86 3.9MB
x86_64 4MB

3.2.0

June 21st, 2019

Enhancements

  • CLIENT-6282 The SDK can now be compiled alongside the Programmable Video SDK. Please perform the following steps to properly upgrade to 3.2.0
    • Modify the classpath of any java files used from org.webrtc.* to tvo.webrtc.*. Calling APIs to any class in org.webrtc.* will have no effect within the Voice SDK.
    • Perform the following modifications to your proguard file when compiling the Voice SDK for a release build with obfuscation.
    • Change -keep class org.webrtc.** { *; } to -keep class tvo.webrtc.** { *; }
    • Change -dontwarn org.webrtc.** to -dontwarn tvo.webrtc.**

Known Issues

  • CLIENT-4943 Restrictive networks may fail unless ICE servers are provided via ConnectOptions.Builder.iceOptions(...) or AcceptOptions.Builder.iceOptions(...). ICE servers can be obtained from Twilio Network Travarsal Service.
  • CLIENT-5242 Occasional native crash in AsyncTask of registration/unregistration and event publishing. The crash has only been observed on API 18 devices and results from a thread safety bug in Android. Similar crashes have been reported in the popular networking library OkHttp #1520 #1338. If this bug is impacting your applications, please open an issue on our quickstart and we will investigate potential fixes.

Library Size Report

ABI App Size Increase
universal 14.7MB
armeabi-v7a 3.3MB
arm64-v8a 3.8MB
x86 3.9MB
x86_64 4MB

3.1.2

June 20th, 2019

Bug Fixes

  • CLIENT-6246 Fixed bug on API 19 and below where the SDK would incorrectly surface a REGISTRATION_ERROR_CODE/31301 exception for calls to Voice.register(...) or Voice.unregister(...) when a EXCEPTION_INVALID_ACCESS_TOKEN/20101 actually occurred.

Known Issues

  • CLIENT-5075 The SDK cannot be added alongside the Programmable Video SDK.
  • CLIENT-4943 Restrictive networks may fail unless ICE servers are provided via ConnectOptions.Builder.iceOptions(...) or AcceptOptions.Builder.iceOptions(...). ICE servers can be obtained from Twilio Network Travarsal Service.
  • CLIENT-5242 Occasional native crash in AsyncTask of registration/unregistration and event publishing. The crash has only been observed on API 18 devices and results from a thread safety bug in Android. Similar crashes have been reported in the popular networking library OkHttp #1520 #1338. If this bug is impacting your applications, please open an issue on our quickstart and we will investigate potential fixes.

Library Size Report

ABI App Size Increase
universal 14.7MB
armeabi-v7a 3.3MB
arm64-v8a 3.8MB
x86 3.9MB
x86_64 4MB

3.1.1

June 12th, 2019

Enhancements

  • Switched CI provider for build, test, and release pipeline.
  • The Twilio CDN will no longer host the Voice Android aar artifacts or Javadocs. All artifacts and javadocs previously hosted on the Twilio CDN will remain.
Accessing Artifacts

If you are downloading Voice Android SDK artifacts from the Twilio CDN then there are two options available moving forward.

  1. Follow our Get Started with the Programmable Voice SDKs.
  2. Download the artifacts directly from Bintray.
Viewing Javadocs

All Javadocs back to 3.0.0-preview1 are now hosted on Github Pages with the following URL scheme. https://twilio.github.io/twilio-voice-android/docs/{version}

Known Issues

  • CLIENT-5075 The SDK cannot be added alongside the Programmable Video SDK.
  • CLIENT-4943 Restrictive networks may fail unless ICE servers are provided via ConnectOptions.Builder.iceOptions(...) or AcceptOptions.Builder.iceOptions(...). ICE servers can be obtained from Twilio Network Travarsal Service.
  • CLIENT-5242 Occasional native crash in AsyncTask of registration/unregistration and event publishing. The crash has only been observed on API 18 devices and results from a thread safety bug in Android. Similar crashes have been reported in the popular networking library OkHttp #1520 #1338. If this bug is impacting your applications, please open an issue on our quickstart and we will investigate potential fixes.

Library Size Report

ABI App Size Increase
universal 14.7MB
armeabi-v7a 3.3MB
arm64-v8a 3.8MB
x86 3.9MB
x86_64 4MB

3.1.0

May 16th, 2019

Enhancements

Improved error codes

We now surface more details about errors encountered during Voice.register(...), Voice.unregister(...), Voice.connect(...), and CallInvite.accept(...). Previously, these functions reported these errors with the generic error REGISTRATION_ERROR_CODE/31301 or EXCEPTION_CONNECTION_ERROR/31005.

With the new error codes, you can make more informed decisions about how to remedy the problem. For example, error code EXCEPTION_BAD_REQUEST and EXCEPTION_TOO_MANY_REQUEST indicate potential programming issues, while EXCEPTION_ACCESS_TOKEN_REJECTED indicates an issue with your Access Token.

Please note, you may need to change your code if you have added special handling for REGISTRATION_ERROR_CODE/31301 or EXCEPTION_CONNECTION_ERROR/31005.

For more information see the API docs

The following is a summary of the new codes available for Voice.register(...) and Voice.unregister(...):

Error Code Error Message
31400 Bad Request
31403 Forbidden
31404 Not Found
31408 Request Timeout
31409 Conflict
31426 Upgrade Required. This is most likely related to a TLS version not accepted by Twilio's infrastructure
31429 Too Many Requests
31500 Internal Server
31502 Bad Gateway
31503 Service Unavailable
31504 Gateway Timeout

The following is a summary of the new codes available for Voice.connect(...) and CallInvite.accept(...):

Error Code Error Message
31009 Transport error
31400 Bad Request
31403 Forbidden
31404 Not Found
31408 Request Timeout
31480 Temporarily Unavailable
31481 Call/Transaction Does Not Exist
31486 Busy Here
31487 Request Terminated
31500 Internal Server
31502 Bad Gateway
31503 Service Unavailable
31504 Gateway Timeout
31530 DNS Resolution Error
31600 Busy Everywhere
31603 Decline
31604 Does Not Exist Anywhere

Bug Fixes

  • CLIENT-6077 The SDK reports error events to Insights when exception occurs during registration/unregistration.

Known Issues

  • CLIENT-5075 The SDK cannot be added alongside the Programmable Video SDK.
  • CLIENT-4943 Restrictive networks may fail unless ICE servers are provided via ConnectOptions.Builder.iceOptions(...) or AcceptOptions.Builder.iceOptions(...). ICE servers can be obtained from Twilio Network Travarsal Service.
  • CLIENT-5242 Occasional native crash in AsyncTask of registration/unregistration and event publishing. The crash has only been observed on API 18 devices and results from a thread safety bug in Android. Similar crashes have been reported in the popular networking library OkHttp #1520 #1338. If this bug is impacting your applications, please open an issue on our quickstart and we will investigate potential fixes.

Library Size Report

ABI App Size Increase
universal 14.7MB
armeabi-v7a 3.3MB
arm64-v8a 3.8MB
x86 3.9MB
x86_64 4MB

3.0.0

April 25th, 2019

We have promoted 3.0.0-beta13 to 3.0.0. Reference our migration guide to upgrade your applications to 3.0.0.

Known Issues

  • CLIENT-5075 The SDK cannot be added alongside the Programmable Video SDK.
  • CLIENT-4943 Restrictive networks may fail unless ICE servers are provided via ConnectOptions.Builder.iceOptions(...) or AcceptOptions.Builder.iceOptions(...). ICE servers can be obtained from Twilio Network Travarsal Service.
  • CLIENT-5242 Occasional native crash in AsyncTask of registration/unregistration and event publishing. The crash has only been observed on API 18 devices and results from a thread safety bug in Android. Similar crashes have been reported in the popular networking library OkHttp #1520 #1338. If this bug is impacting your applications, please open an issue on our quickstart and we will investigate potential fixes.

Library Size Report

ABI App Size Increase
universal 14.7MB
armeabi-v7a 3.3MB
arm64-v8a 3.8MB
x86 3.9MB
x86_64 4MB

3.0.0-beta13

April 18th, 2019

Bug Fixes

  • CLIENT-5981 The SDK erroneously raised multiple call quality warnings events to Insights.

Known Issues

  • CLIENT-5075 The SDK cannot be added alongside the Programmable Video SDK.
  • CLIENT-4943 Restrictive networks may fail unless ICE servers are provided via ConnectOptions.Builder.iceOptions(...) or AcceptOptions.Builder.iceOptions(...). ICE servers can be obtained from Twilio Network Travarsal Service.
  • CLIENT-5242 Occasional native crash in AsyncTask of registration/unregistration and event publishing. The crash has only been observed on API 18 devices and results from a thread safety bug in Android. Similar crashes have been reported in the popular networking library OkHttp #1520 #1338. If this bug is impacting your applications, please open an issue on our quickstart and we will investigate potential fixes.

Library Size Report

ABI App Size Increase
universal 14.7MB
armeabi-v7a 3.3MB
arm64-v8a 3.8MB
x86 3.9MB
x86_64 4MB

3.0.0-beta12

April 17th, 2019

Enhancements

  • CLIENT-5974 Removed unused error CallConnectionTimeoutException, AudioDeviceErrorException, SignalingConnectionErrorCode, SignalingConnectionTimeoutErrorCode, SignalingIncomingMessageInvalidErrorCode, SignalingOutgoingMessageInvalidErrorCode, ConfigurationAcquireFailedErrorCode, ConfigurationAcquireTurnFailedErrorCode from the CallException error code class.

Bug Fixes

  • CLIENT-5935 Fixed a bug where constant audio level warning Insights events are reported when the call is muted or on hold.
  • CLIENT-5951 Fixed a bug where "packets_lost" field was missing in the metric event.
  • CLIENT-5954 Fixed a bug where the SDK reported integer MOS score with "low-mos" warning event.
  • Client 5978 Fixed a bug where the SDK reported double values for packets_lost_fraction to Insights instead of integer.

Known Issues

  • CLIENT-5075 The SDK cannot be added alongside the Programmable Video SDK.
  • CLIENT-4943 Restrictive networks may fail unless ICE servers are provided via ConnectOptions.Builder.iceOptions(...) or AcceptOptions.Builder.iceOptions(...). ICE servers can be obtained from Twilio Network Travarsal Service.
  • CLIENT-5242 Occasional native crash in AsyncTask of registration/unregistration and event publishing. The crash has only been observed on API 18 devices and results from a thread safety bug in Android. Similar crashes have been reported in the popular networking library OkHttp #1520 #1338. If this bug is impacting your applications, please open an issue on our quickstart and we will investigate potential fixes.

Library Size Report

ABI App Size Increase
universal 14.7MB
armeabi-v7a 3.3MB
arm64-v8a 3.8MB
x86 3.9MB
x86_64 4MB

3.0.0-beta11

April 12th, 2019

Bug Fixes

  • CLIENT-5899 Fixed an issue where in rare cases a call got disconnected during call setup due to frequent network changes.

Known Issues

  • CLIENT-5075 The SDK cannot be added alongside the Programmable Video SDK.
  • CLIENT-4943 Restrictive networks may fail unless ICE servers are provided via ConnectOptions.Builder.iceOptions(...) or AcceptOptions.Builder.iceOptions(...). ICE servers can be obtained from Twilio Network Travarsal Service.
  • CLIENT-5242 Occasional native crash in AsyncTask of registration/unregistration and event publishing. The crash has only been observed on API 18 devices and results from a thread safety bug in Android. Similar crashes have been reported in the popular networking library OkHttp #1520 #1338. If this bug is impacting your applications, please open an issue on our quickstart and we will investigate potential fixes.

Library Size Report

ABI App Size Increase
universal 14.7MB
armeabi-v7a 3.3MB
arm64-v8a 3.8MB
x86 3.9MB
x86_64 4MB

3.0.0-beta10

April 4th, 2019

Bug Fixes

  • CLIENT-5379 Fixed an issue where WiFi to WiFi network handoff was causing one-way audio followed by Call disconnect.

Known Issues

  • CLIENT-5576 LTE to WiFI handover may cause one way audio.
  • CLIENT-5075 The SDK cannot be added alongside the Programmable Video SDK.
  • CLIENT-4943 Restrictive networks may fail unless ICE servers are provided via ConnectOptions.Builder.iceOptions(...) or AcceptOptions.Builder.iceOptions(...). ICE servers can be obtained from Twilio Network Travarsal Service.
  • CLIENT-5242 Occasional native crash in AsyncTask of registration/unregistration and event publishing. The crash has only been observed on API 18 devices and results from a thread safety bug in Android. Similar crashes have been reported in the popular networking library OkHttp #1520 #1338. If this bug is impacting your applications, please open an issue on our quickstart and we will investigate potential fixes.

Library Size Report

ABI App Size Increase
universal 14.7MB
armeabi-v7a 3.3MB
arm64-v8a 3.8MB
x86 3.9MB
x86_64 4MB

3.0.0-beta9

April 2nd, 2019

Bug Fixes

  • CLIENT-5828, CLIENT-5868 A network change that occurs during a reconnection will now trigger another reconnection attempt ensuring media is restored on the correct network.
  • CLIENT-5882 Call metrics insights will always be available when the Call is in Call.State.CONNECTED state including after a network handover.

Known Issues

  • CLIENT-5576 LTE to WiFI handover may cause one way audio.
  • CLIENT-5075 The SDK cannot be added alongside the Programmable Video SDK.
  • CLIENT-4943 Restrictive networks may fail unless ICE servers are provided via ConnectOptions.Builder.iceOptions(...) or AcceptOptions.Builder.iceOptions(...). ICE servers can be obtained from Twilio Network Travarsal Service.
  • CLIENT-5242 Occasional native crash in AsyncTask of registration/unregistration and event publishing. The crash has only been observed on API 18 devices and results from a thread safety bug in Android. Similar crashes have been reported in the popular networking library OkHttp #1520 #1338. If this bug is impacting your applications, please open an issue on our quickstart and we will investigate potential fixes.

Library Size Report

ABI App Size Increase
universal 14.7MB
armeabi-v7a 3.3MB
arm64-v8a 3.8MB
x86 3.9MB
x86_64 4MB

3.0.0-beta8

March 27th, 2019

API Changes

  • Attempts to connect a call via Voice.connect(...) or CallInvite.accept(...) that fail prior to reaching the connected state will always raise an onConnectFailure(...) with an error code. However, if Call.disconnect() is called while an attempt to connect or accept a call is made, the onDisconnected(...) will be raised with no error.

Updates

  • CLIENT-5808 CLIENT-5809 Updated the API documentation for CallInvite.accept.
  • CLIENT-5811 Updated the API documentation for Call.

Bug Fixes

  • CLIENT-5813 Network loss scenarios that resulted in a call failure now raise the onConnectFailure(...) callback. Previously these scenarios erroneously raised onDisconnected(...).
  • CLIENT-5754 A call that fails as a result of not establishing a media connection prior to being connected now raises the onConnectFailure(...) callback. Previously this scenario erroneously raised onDisconnected(...).
  • CLIENT-5821 The packets_lost_fraction value reported to Insights is correctly computed and within the expect range of 0 to 100.
  • CLIENT-5835 Events were erroneously reported to Insights when the ConnectOptions.enableInsights property was set to false.

Known Issues

  • CLIENT-5576 LTE to WiFI handover may cause one way audio.
  • CLIENT-5075 The SDK cannot be added alongside the Programmable Video SDK.
  • CLIENT-4943 Restrictive networks may fail unless ICE servers are provided via ConnectOptions.Builder.iceOptions(...) or AcceptOptions.Builder.iceOptions(...). ICE servers can be obtained from Twilio Network Travarsal Service.
  • CLIENT-5242 Occasional native crash in AsyncTask of registration/unregistration and event publishing. The crash has only been observed on API 18 devices and results from a thread safety bug in Android. Similar crashes have been reported in the popular networking library OkHttp #1520 #1338. If this bug is impacting your applications, please open an issue on our quickstart and we will investigate potential fixes.
  • CLIENT-5882 Call metrics insights becomes unavailable after a network handover during a call.

Library Size Report

ABI App Size Increase
universal 14.7MB
armeabi-v7a 3.3MB
arm64-v8a 3.8MB
x86 3.9MB
x86_64 4MB

3.0.0-beta7

March 19th, 2019

API Changes

  • The getFrom() method from CallInvite and CancelledCallInvite is now nullable in case the value is not available in the call invite message.

Bug Fixes

  • CLIENT-5800: Fixed an issue where an incoming call invite that did not contain a from field was not considered a valid message.

Known Issues

  • CLIENT-5576 LTE to WiFI handover may cause one way audio.
  • CLIENT-5075 The SDK cannot be added alongside the Programmable Video SDK.
  • CLIENT-4943 Restrictive networks may fail unless ICE servers are provided via ConnectOptions.Builder.iceOptions(...) or AcceptOptions.Builder.iceOptions(...). ICE servers can be obtained from Twilio Network Travarsal Service.
  • CLIENT-5242 Occasional native crash in AsyncTask of registration/unregistration and event publishing. The crash has only been observed on API 18 devices and results from a thread safety bug in Android. Similar crashes have been reported in the popular networking library OkHttp #1520 #1338. If this bug is impacting your applications, please open an issue on our quickstart and we will investigate potential fixes.
  • CLIENT-5882 Call metrics insights becomes unavailable after a network handover during a call.

Library Size Report

ABI App Size Increase
universal 14.7MB
armeabi-v7a 3.3MB
arm64-v8a 3.8MB
x86 3.9MB
x86_64 4MB

3.0.0-beta6

March 14th, 2019

Updates

  • CLIENT-5742 Removed context parameter in handleMessage(...) API.
  • CLIENT-5353 Built with an audio only variant of WebRTC 67 where SCTP is disabled.

Known Issues

  • CLIENT-5576 LTE to WiFI handover may cause one way audio.
  • CLIENT-5075 The SDK cannot be added alongside the Programmable Video SDK.
  • CLIENT-4943 Restrictive networks may fail unless ICE servers are provided via ConnectOptions.Builder.iceOptions(...) or AcceptOptions.Builder.iceOptions(...). ICE servers can be obtained from Twilio Network Travarsal Service.
  • CLIENT-5242 Occasional native crash in AsyncTask of registration/unregistration and event publishing. The crash has only been observed on API 18 devices and results from a thread safety bug in Android. Similar crashes have been reported in the popular networking library OkHttp #1520 #1338. If this bug is impacting your applications, please open an issue on our quickstart and we will investigate potential fixes.
  • CLIENT-5882 Call metrics insights becomes unavailable after a network handover during a call.

Library Size Report

ABI App Size Increase
universal 14.7MB
armeabi-v7a 3.3MB
arm64-v8a 3.8MB
x86 3.9MB
x86_64 4MB

3.0.0-beta5

March 4th, 2019

Updates

  • CLIENT-5534 Added IceCandidateStats and IceCandidatePairStats to StatsReport.

Improvements

  • CLIENT-5516 Reduced connection time by removing a hostname lookup
  • CLIENT-5688 Retry failed DNS resolution during reconnect

Bug Fixes

  • CLIENT-5612 Fixed bug where Call may get disconnected when ipv6 WiFi network disappears when LTE connection is on
  • CLIENT-5578 CLIENT-5688 Fixed bug where WiFi to WiFi network handover may disconnect the Call while LTE connection is on

Known Issues

  • CLIENT-5576 LTE to WiFI handover may cause one way audio.
  • CLIENT-5075 The SDK cannot be added alongside the Programmable Video SDK.
  • CLIENT-4943 Restrictive networks may fail unless ICE servers are provided via ConnectOptions.Builder.iceOptions(...) or AcceptOptions.Builder.iceOptions(...). ICE servers can be obtained from Twilio Network Travarsal Service.
  • CLIENT-4805 The SDK size is significantly larger than 2.x. A reduced size will be introduced during the beta period.
  • CLIENT-5242 Occasional native crash in AsyncTask of registration/unregistration and event publishing. The crash has only been observed on API 18 devices and results from a thread safety bug in Android. Similar crashes have been reported in the popular networking library OkHttp #1520 #1338. If this bug is impacting your applications, please open an issue on our quickstart and we will investigate potential fixes.
  • CLIENT-5882 Call metrics insights becomes unavailable after a network handover during a call.

Library Size Report

ABI App Size Increase
universal 15.4MB
armeabi-v7a 3.4MB
arm64-v8a 4MB
x86 4.1MB
x86_64 4.2MB

3.0.0-beta4

February 12th, 2019

Bug Fixes

  • CLIENT-5539 Fixed bug in HttpsURLConnection management where input, output, and error streams were not closed.

Known issues

  • CLIENT-5578 WiFi to WiFi handover may disconnect the Call.
  • CLIENT-5576 LTE to WiFI handover may cause one way audio.
  • CLIENT-5612 IPv6 WiFi to IPv4 LTE handover may disconnect the Call.
  • CLIENT-5075 The SDK cannot be added alongside the Programmable Video SDK.
  • CLIENT-4943 Restrictive networks may fail unless ICE servers are provided via ConnectOptions.Builder.iceOptions(...) or AcceptOptions.Builder.iceOptions(...). ICE servers can be obtained from Twilio Network Travarsal Service.
  • CLIENT-4805 The SDK size is significantly larger than 2.x. A reduced size will be introduced during the beta period.
  • CLIENT-5242 Occasional native crash in AsyncTask of registration/unregistration and event publishing. The crash has only been observed on API 18 devices and results from a thread safety bug in Android. Similar crashes have been reported in the popular networking library OkHttp #1520 #1338. If this bug is impacting your applications, please open an issue on our quickstart and we will investigate potential fixes.
  • CLIENT-5882 Call metrics insights becomes unavailable after a network handover during a call.

Library Size Report

ABI App Size Increase
universal 15.4MB
armeabi-v7a 3.4MB
arm64-v8a 4MB
x86 4.1MB
x86_64 4.2MB

3.0.0-beta3

February 7th, 2019

Updates

  • CLIENT-5599 Added VoiceException.EXCEPTION_ACCESS_TOKEN_REJECTED. This error is raised when attempting to authenticate with a token that is invalid.
  • CLIENT-5587 Removed Context argument from Voice.register(...) and Voice.unregister(...).

Enhancements

  • SDK publishes call Insights. Publishing is enabled by default. The preference can be updated by calling ConnectOptions.Builder.enableInsights(boolean) and AcceptOptions.Builder.enableInsights(boolean).
  • Implemented network handoff. Signaling and media connection renegotiation are now automatically attempted after network changes.
  • Added Call.postFeedback(...) API. This API posts the feedback collected for this call to Twilio. If no parameters are passed, Twilio will report feedback was not available for this call.
  • CLIENT-2985 The SDK can connect to Twilio’s Servers in an IPv6 environment.

Bug Fixes

  • CLIENT-5569 Fixed bug where SDK does not explicitly use the application context when required. getApplicationContext is now invoked internally on context arguments passed to public API methods when an application context is required.
  • CLIENT-5591 Added FATAL definition to LogLevel enum.

Known issues

  • CLIENT-5578 WiFi to WiFi handover may disconnect the Call.
  • CLIENT-5576 LTE to WiFI handover may cause one way audio.
  • CLIENT-5612 IPv6 WiFi to IPv4 LTE handover may disconnect the Call.
  • CLIENT-5075 The SDK cannot be added alongside the Programmable Video SDK.
  • CLIENT-4943 Restrictive networks may fail unless ICE servers are provided via ConnectOptions.Builder.iceOptions(...) or AcceptOptions.Builder.iceOptions(...). ICE servers can be obtained from Twilio Network Travarsal Service.
  • CLIENT-4805 The SDK size is significantly larger than 2.x. A reduced size will be introduced during the beta period.
  • CLIENT-5242 Occasional native crash in AsyncTask of registration/unregistration and event publishing. The crash has only been observed on API 18 devices and results from a thread safety bug in Android. Similar crashes have been reported in the popular networking library OkHttp #1520 #1338. If this bug is impacting your applications, please open an issue on our quickstart and we will investigate potential fixes.
  • CLIENT-5882 Call metrics insights becomes unavailable after a network handover during a call.

Library Size Report

ABI App Size Increase
universal 15.3MB
armeabi-v7a 3.4MB
arm64-v8a 4MB
x86 4.1MB
x86_64 4.2MB

3.0.0-beta2

December 12th, 2018

Enhancements

  • Added new error code 31008. This error is raised when a CallInvite is accepted after a call has ended.
  • ConnectOptions.Builder.preferAudioCodecs(...) and AcceptOptions.Builder.preferAudioCodecs(...) were added to set preferred audio codecs.

Bug Fixes

  • CLIENT-5398 Unmuting a call on hold causes audio to flow.

Known issues

  • CLIENT-5075 The SDK cannot be added alongside the Programmable Video SDK.
  • CLIENT-4943 Restrictive networks may fail unless ICE servers are provided via ConnectOptions.Builder.iceOptions(...) or AcceptOptions.Builder.iceOptions(...). ICE servers can be obtained from Twilio Network Travarsal Service.
  • CLIENT-4805 The SDK size is significantly larger than 2.x. A reduced size will be introduced during the beta period.
  • CLIENT-4998 Network handoff, and subsequent connection renegotiation is not supported.
  • CLIENT-2985 IPv6 is not supported.
  • CLIENT-4673 Error codes 20151 report different message and explanation text than Voice 2.0 SDKs
  • CLIENT-4537 PCMU is the only supported codec. We plan on adding support for Opus moving forward. #117
  • CLIENT-5242 Occasional native crash in AsyncTask of registration/unregistration and event publishing. The crash has only been observed on API 18 devices and results from a thread safety bug in Android. Similar crashes have been reported in the popular networking library OkHttp #1520 #1338. If this bug is impacting your applications, please open an issue on our quickstart and we will investigate potential fixes.

Library Size Report

ABI App Size Increase
universal 15.3MB
armeabi-v7a 3.4MB
arm64-v8a 3.9MB
x86 4.1MB
x86_64 4.1MB

3.0.0-beta1

November 24th, 2018

Enhancements

  • Documented the default log level LogLevel.ERROR in getLogLevel and getLogModuleLevel javadoc.
  • Added media and signaling related error codes.

Known issues

  • CLIENT-5075 The SDK cannot be added alongside the Programmable Video SDK.=
  • CLIENT-4943 Restrictive networks may fail unless ICE servers are provided via ConnectOptions.Builder.iceOptions(...) or AcceptOptions.Builder.iceOptions(...). ICE servers can be obtained from Twilio Network Travarsal Service.
  • CLIENT-4805 The SDK size is significantly larger than 2.x. A reduced size will be introduced during the beta period.
  • CLIENT-4998 Network handoff, and subsequent connection renegotiation is not supported.
  • CLIENT-2985 IPv6 is not supported.
  • CLIENT-4673 Error codes 20151 report different message and explanation text than Voice 2.0 SDKs
  • CLIENT-4537 PCMU is the only supported codec. We plan on adding support for Opus moving forward. #117
  • CLIENT-5242 Occasional native crash in AsyncTask of registration/unregistration and event publishing. The crash has only been observed on API 18 devices and results from a thread safety bug in Android. Similar crashes have been reported in the popular networking library OkHttp #1520 #1338. If this bug is impacting your applications, please open an issue on our quickstart and we will investigate potential fixes.
  • CLIENT-5398 Unmuting a call on hold causes audio to flow.

Library Size Report

ABI App Size Increase
universal 15.1MB
armeabi-v7a 3.4MB
arm64-v8a 3.9MB
x86 4MB
x86_64 4.1MB

3.0.0-preview6

October 30th, 2018

Enhancements

  • The Android Voice SDK is built with an audio only variant of WebRTC 67. The table below shows the size reduction from compiling with an audio only variant release:

    ABI 3.0.0-preview5 App Size Increase 3.0.0-preview6 App Size Increase
    universal 17.8MB 15.1MB
    armeabi-v7a 4MB 3.4MB
    arm64-v8a 4.6MB 3.9MB
    x86 4.9MB 4MB
    x86_64 4.9MB 4.1MB

Known issues

  • CLIENT-5075 The SDK cannot be added alongside the Programmable Video SDK.
  • CLIENT-5062 Calls made to a client or PSTN number that have a long duration before answering may not get connected.
  • CLIENT-4943 Restrictive networks may fail unless ICE servers are provided via ConnectOptions.Builder.iceOptions(...) or AcceptOptions.Builder.iceOptions(...). ICE servers can be obtained from Twilio Network Travarsal Service.
  • CLIENT-4805 The SDK size is significantly larger than 2.x. A reduced size will be introduced during the beta period.
  • CLIENT-4998 Network handoff, and subsequent connection renegotiation is not supported.
  • CLIENT-2985 IPv6 is not supported.
  • CLIENT-4673 Error codes 20151 report different message and explanation text than Voice 2.0 SDKs
  • CLIENT-4537 PCMU is the only supported codec. We plan on adding support for Opus moving forward. #117
  • CLIENT-5242 Occasional native crash in AsyncTask of registration/unregistration and event publishing. The crash has only been observed on API 18 devices and results from a thread safety bug in Android. Similar crashes have been reported in the popular networking library OkHttp #1520 #1338. If this bug is impacting your applications, please open an issue on our quickstart and we will investigate potential fixes.

Library Size Report

ABI App Size Increase
universal 15.1MB
armeabi-v7a 3.4MB
arm64-v8a 3.9MB
x86 4MB
x86_64 4.1MB

3.0.0-preview5

October 1st, 2018

Enhancements

  • Added custom parameters to CallInvite with a new method called getCustomParamaters().
// Pass custom parameters in TwiML
<?xml version="1.0" encoding="UTF-8"?>
    <Response>
        <Dial answerOnBridge="false" callerId="client:alice">
            <Client>
                <Identity>bob</Identity>
                <Parameter name="caller_first_name" value="alice"  />
                <Parameter name="caller_last_name" value="smith"  />
            </Client>
        </Dial>
    </Response>

callInvite.getCustomParameters() returns a map of key-value pair passed in the TwiML.

"caller_first_name" -> "alice"
"caller_last_name" -> "smith"

Known issues

  • CLIENT-5075 The SDK cannot be added alongside the Programmable Video SDK.
  • CLIENT-5062 Calls made to a client or PSTN number that have a long duration before answering may not get connected.
  • CLIENT-4943 Restrictive networks may fail unless ICE servers are provided via ConnectOptions.Builder.iceOptions(...) or AcceptOptions.Builder.iceOptions(...). ICE servers can be obtained from Twilio Network Travarsal Service.
  • CLIENT-4805 The SDK size is significantly larger than 2.x. A reduced size will be introduced during the beta period.
  • CLIENT-4998 Network handoff, and subsequent connection renegotiation is not supported.
  • CLIENT-2985 IPv6 is not supported.
  • CLIENT-4673 Error codes 20151 report different message and explanation text than Voice 2.0 SDKs
  • CLIENT-4537 PCMU is the only supported codec. We plan on adding support for Opus moving forward. #117
  • CLIENT-5242 Occasional native crash in AsyncTask of registration/unregistration and event publishing. The crash has only been observed on API 18 devices and results from a thread safety bug in Android. Similar crashes have been reported in the popular networking library OkHttp #1520 #1338. If this bug is impacting your applications, please open an issue on our quickstart and we will investigate potential fixes.

Library Size Report

ABI App Size Increase
universal 17.8MB
armeabi-v7a 4MB
arm64-v8a 4.6MB
x86 4.9MB
x86_64 4.9MB

3.0.0-preview4

September 27th, 2018

Enhancements

  • Upgraded to WebRTC 67
  • Upgraded to Java 8. Add the following snippet to your build.gradle to enable Java 8 features required to build the 3.x Voice Android SDK:

    Groovy android { compileOptions { sourceCompatibility 1.8 targetCompatibility 1.8 } } - Report registration and unregistration events to Twilio Insights.

Known issues

  • CLIENT-5075 The SDK cannot be added alongside the Programmable Video SDK.
  • CLIENT-5062 Calls made to a client or PSTN number that have a long duration before answering may not get connected.
  • CLIENT-4943 Restrictive networks may fail unless ICE servers are provided via ConnectOptions.Builder.iceOptions(...) or AcceptOptions.Builder.iceOptions(...). ICE servers can be obtained from Twilio Network Travarsal Service.
  • CLIENT-4805 The SDK size is significantly larger than 2.x. A reduced size will be introduced during the beta period.
  • CLIENT-4998 Network handoff, and subsequent connection renegotiation is not supported.
  • CLIENT-2985 IPv6 is not supported.
  • CLIENT-4672, CLIENT-4673 Error codes 20157 and 20151 report different message and explanation text than Voice 2.0 SDKs
  • CLIENT-4537 PCMU is the only supported codec. We plan on adding support for Opus moving forward. #117
  • CLIENT-5242 Occasional native crash in AsyncTask of registration/unregistration and event publishing. The crash has only been observed on API 18 devices and results from a thread safety bug in Android. Similar crashes have been reported in the popular networking library OkHttp #1520 #1338. If this bug is impacting your applications, please open an issue on our quickstart and we will investigate potential fixes.

Library Size Report

ABI App Size Increase
universal 18.1MB
armeabi-v7a 4.1MB
arm64-v8a 4.7MB
x86 5MB
x86_64 5MB

3.0.0-preview3

September 4th, 2018

Enhancements

API Changes:
  • Nullability annotations have been added. Methods that expect @NonNull parameters throw NullPointerException. Methods that validate parameters for a specified input throw IllegalStateException if invalid.
  • Moved CallState to Call.State
  • Provide a stateless mechanism for processing push messages related to call invites and call invite cancellations. This API no longer raises errors when processing invalid messages, instead a boolean value is returned when handleMessage(context, data) is called. The boolean value is true when the provided data results in a CallInvite or CancelledCallInvite. If handleMessage(context, data) returns false it means the data provided was not a Twilio Voice push message. The CallInvite has an accept() and reject() method. While the CancelledCallInvite simply provides the to, from, and callSid fields also available in the CallInvite. The method getCallSid() can be used to associate a CallInvite with a CancelledCallInvite.
  • Migrated the API CallInvite to CallInvite and CancelledCallInvite.
       // Processing push messages in 2.X
       handleMessage(context, data, new MessageListener() {
           @Override
           void onCallInvite(CallInvite callInvite) {
                 // Check state and process invite
                 if (callInvite.getState().equals(PENDING)) {
                     // Show notification to answer or reject call
                 } else if(callInvite.getState().equals(CANCELLED)) {
                     // Hide notification
                 }
           }

           @Override
           void onError(MessageException messageException) {
               // Invalid data was provided
           }
       });

       // Processing push messages in 3.X
       boolean handled = handleMessage(context, data, new MessageListener() {
           @Override
           void onCallInvite(CallInvite callInvite) {
               // Show notification to answer or reject call
           }

           @Override
           void onCancelledCallInvite(CancelledCallInvite callInvite) {
               // Hide notification
           }
       });

       if(!handled) {
           // This message is not a Twilio voice push message
       }
  • Introduced call.getStats() method that returns a list of StatsReport with metrics for all the audio tracks in a call.
    call.getStats(new StatsListener() {
        @Override
        public void onStats(@NonNull List<StatsReport> statsReports) {
            // Process statsReports
        }
    });

Known issues

  • CLIENT-5075 The SDK cannot be added alongside the Programmable Video SDK.
  • CLIENT-5062 Calls made to a client or PSTN number that have a long duration before answering may not get connected.
  • CLIENT-4943 Restrictive networks may fail unless ICE servers are provided via ConnectOptions.Builder.iceOptions(...) or AcceptOptions.Builder.iceOptions(...). ICE servers can be obtained from Twilio Network Travarsal Service.
  • CLIENT-4805 The SDK size is significantly larger than 2.x. A reduced size will be introduced during the beta period.
  • CLIENT-4998 Network handoff, and subsequent connection renegotiation is not supported.
  • CLIENT-2985 IPv6 is not supported.
  • CLIENT-4698 Params that are passed to your TwiML Application while making calls are not URL encoded
  • CLIENT-4547 Insights is not published
  • CLIENT-4672, CLIENT-4673 Error codes 20157 and 20151 report different message and explanation text than Voice 2.0 SDKs
  • CLIENT-4537 PCMU is the only supported codec. We plan on adding support for Opus moving forward. #117
  • CLIENT-5242 Occasional native crash in AsyncTask of registration/unregistration and event publishing. The crash has only been observed on API 18 devices and results from a thread safety bug in Android. Similar crashes have been reported in the popular networking library OkHttp #1520 #1338. If this bug is impacting your applications, please open an issue on our quickstart and we will investigate potential fixes.

Library Size Report

ABI App Size Increase
universal 20.7MB
armeabi-v7a 4.5MB
arm64-v8a 5.4MB
x86 5.8MB
x86_64 5.5MB

3.0.0-preview2

August 27th, 2018

Enhancements

API Changes:
  • Introduced CallState.RINGING
  • Introduced a new callback method Call.Listener.onRinging(). This callback is emitted once before the Call.Listener.onConnected() callback when the callee is being alerted of a Call. The behavior of this callback is determined by the answerOnBridge flag provided in the Dial verb of your TwiML application associated with this client. If the answerOnBridge flag is false, which is the default, the Call.Listener.onConnected() callback will be emitted immediately after Call.Listener.onRinging(). If the answerOnBridge flag is true, this will cause the call to emit the onConnected callback only after the call is answered. See answeronbridge for more details on how to use it with the Dial TwiML verb. If the twiML response contains a Say verb, then the call will emit the Call.Listener.onConnected callback immediately after Call.Listener.onRinging() is raised, irrespective of the value of answerOnBridge being set to true or false

Known issues

  • CLIENT-5075 The SDK cannot be added alongside the Programmable Video SDK.
  • CLIENT-5062 Calls made to a client or PSTN number that have a long duration before answering may not get connected.
  • CLIENT-4943 Restrictive networks may fail unless ICE servers are provided via ConnectOptions.Builder.iceOptions(...) or AcceptOptions.Builder.iceOptions(...). ICE servers can be obtained from Twilio Network Travarsal Service.
  • CLIENT-4805 The SDK size is significantly larger than 2.x. A reduced size will be introduced during the beta period.
  • CLIENT-4998 Network handoff, and subsequent connection renegotiation is not supported.
  • CLIENT-2985 IPv6 is not supported.
  • CLIENT-4698 Params that are passed to your TwiML Application while making calls are not URL encoded
  • CLIENT-4547 Insights is not published
  • CLIENT-4672, CLIENT-4673 Error codes 20157 and 20151 report different message and explanation text than Voice 2.0 SDKs
  • CLIENT-4537 PCMU is the only supported codec. We plan on adding support for Opus moving forward. #117
  • CLIENT-5242 Occasional native crash in AsyncTask of registration/unregistration and event publishing. The crash has only been observed on API 18 devices and results from a thread safety bug in Android. Similar crashes have been reported in the popular networking library OkHttp #1520 #1338. If this bug is impacting your applications, please open an issue on our quickstart and we will investigate potential fixes.

Library Size Report

ABI App Size Increase
universal 20.7MB
armeabi-v7a 4.5MB
arm64-v8a 5.4MB
x86 5.8MB
x86_64 5.5MB

3.0.0-preview1

August 15th, 2018

This is the first WebRTC based release using Chromium WebRTC 57.

This SDK introduces ConnectOptions and AcceptOptions to allow developers to make behavioral changes associated with a Call.

This SDK allows multiple active Calls to be managed by the application.

Enhancements

API Changes:
  • Migrated the enum PJSIP in LogModule to a more granular set of enums (CORE, PLATFORM, SIGNALING and WEBRTC)
  • Introduced ConnectOptions to allow developers to make behaviorial changes associated with the call
  • Migrated the API to make a Call from Voice.call(...) to Voice.connect(...)
// Making a call in 2.X
 Voice.call(context, accessToken, params, listener);

// Making a call in 3.X
ConnectOptions connectOptions = new ConnectOptions.Builder(accessToken)
            .setParams(params)
                    .build();
Voice.connect(context, connectOptions, listener);
  • Migrated the API to accept a CallInvite using AcceptOptions
// Accepting a call in 2.X
CallInvite.accept(context, listener);

// Accepting a call in 3.X
AcceptOptions acceptOptions = new AcceptOptions.Builder()
            .build();
CallInvite.accept(context, acceptOptions, listener);
  • Introduced call holding via Call.hold(boolean) feature
  • Migrated Voice.setRegion(String) to ConnectOptions.Builder.region(String) and AcceptOptions.Builder.region(String)
  • Migrated Voice.getRegion() to ConnectOptions.getRegion() and AcceptOptions.getRegion()

Known issues

  • CLIENT-5075 The SDK cannot be added alongside the Programmable Video SDK.
  • CLIENT-5062 Calls made to a client or PSTN number that have a long duration before answering may not get connected.
  • CLIENT-4943 Restrictive networks may fail unless ICE servers are provided via ConnectOptions.Builder.iceOptions(...) or AcceptOptions.Builder.iceOptions(...). ICE servers can be obtained from Twilio Network Travarsal Service.
  • CLIENT-4805 The SDK size is significantly larger than 2.x. A reduced size will be introduced during the beta period.
  • CLIENT-4998 Network handoff, and subsequent connection renegotiation is not supported.
  • CLIENT-2985 IPv6 is not supported.
  • CLIENT-4698 Params that are passed to your TwiML Application while making calls are not URL encoded
  • CLIENT-4547 Insights is not published
  • CLIENT-4672, CLIENT-4673 Error codes 20157 and 20151 report different message and explanation text than Voice 2.0 SDKs
  • CLIENT-4537 PCMU is the only supported codec. We plan on adding support for Opus moving forward. #117
  • CLIENT-5242 Occasional native crash in AsyncTask of registration/unregistration and event publishing. The crash has only been observed on API 18 devices and results from a thread safety bug in Android. Similar crashes have been reported in the popular networking library OkHttp #1520 #1338. If this bug is impacting your applications, please open an issue on our quickstart and we will investigate potential fixes.

Library Size Report

ABI App Size Increase
universal 20.7MB
armeabi-v7a 4.5MB
arm64-v8a 5.4MB
x86 5.8MB
x86_64 5.5MB

2.X

For older changelog entries including 2.x, click Changelog

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.