Menu

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?

2.x Changelog

Deprecation Notice - Versions Prior to 2.0.4
Please note that older versions of the Programmable Voice Android library prior to 2.0.4 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 following knowledge base article.

The Changelog below includes links to specific patch-level artifacts. We don't recommend using these links unless you have a known need for a specific patch level.


2.0.9

September 7th, 2018

Bug Fixes

  • CLIENT-5085 Fixed an issue where registration and unregistration successful and failure events were not recorded in Twilio backend.

Known issues

  • CLIENT-2985 IPv6 is not supported.

2.0.8

July 12, 2018

Bug Fixes

  • CLIENT-4823 Fix an issue where early hangup did not disconnect the call if answerOnBridge is enabled.

Known issues

  • CLIENT-2985 IPv6 is not supported.

2.0.7

May 07, 2018

Bug Fixes

  • CLIENT-4607 Fix issue where the Caller is prematurely disconnected while the Callee does not accept the call.

Known issues

  • CLIENT-2985 IPv6 is not supported.

2.0.6

April 19, 2018

Bug Fixes

  • CLIENT-4574 Fixed compatibility issue with Twilio Chat related to overlapping raw resources used to perform certificate validation. This can result in java.security.cert.CertPathValidatorException: Trust anchor for certification path not found. when both Android Voice 2.0.5 or below is used with Android Chat 1.0.14 or above, 2.0.7 or above, and 3.0.0 or above.

Known issues

  • CLIENT-2985 IPv6 is not supported.

2.0.5

March 23, 2018

Enhancements

  • CLIENT-4350 Upgraded the library compileSDKVersion and targetSDKVersion to 27.

Bug Fixes

  • CLIENT-4362 Increased the max teardown timeout from 1 second to 7 seconds. The max teardown timeout ensures that the Call is destroyed within a reasonable period of time for cases where a network condition prevents sending or receiving a disconnect message successfully to or from the Twilio infrastructure. Increasing the timeout ensures that in almost all cases the disconnect message will reach Twilio infrastructure and the Call will not be destroyed prematurely. It also guarantees a local cleanup in case disconnect messages fails to reach the app.

Known issues

  • CLIENT-2985 IPv6 is not supported.

2.0.4

February 6, 2018

Bug Fixes

  • CLIENT-4321 Updated root certificate bundle included in the library.

Known issues

  • CLIENT-2985 IPv6 is not supported.

2.0.3

January 11, 2018

Bug Fixes

  • CLIENT-4262 Improve Javadoc to state that the call sid may be null until the call is connected.

Known issues

  • CLIENT-2985 IPv6 is not supported.

2.0.2

December 21, 2017

Bug Fixes

  • CLIENT-4230 DNS name servers are retrieved using LinkProperties.getDnsServers() starting with API 21 and up. Previously, devices would use the net.dns entries or fallback to 8.8.8.8 and 8.8.4.4.

Known issues

  • CLIENT-2985 IPv6 is not supported.

2.0.1

December 15, 2017

Announcement

  • General Availability (GA) of Android Voice SDK.

Known issues

  • CLIENT-2985 IPv6 is not supported.

2.0.0-beta29

December 14, 2017

Bug Fixes

  • Corrected public APIs to make ConnectSoundDeviceCommand class package scoped and made onError(...) private for CallInvite.

Known issues

  • CLIENT-2985 IPv6 is not supported.

Note: 2.0.0-beta27 and 2.0.0-beta28 were not released on bintray.


2.0.0-beta26

December 13, 2017

Bug Fixes

  • CLIENT-4212 Devices or emulators that fail to start the audio device will retry with a fallback audio device implementation. By default OpenSLES will be attempted first above API 19. If OpenSLES fails an Android JNI implementation will be used. The reverse is true for API 19 and below.

Known issues

  • CLIENT-2985 IPv6 is not supported.

2.0.0-beta25

December 1 , 2017

Features

  • CLIENT-4056

    Twilio sends 2 types of notifications messages via GCM/FCM, call and cancel messages. The message type is encoded in the dictionary with the key twi_message_type and the values twilio.voice.call and twilio.voice.cancel.

    A call message is sent when someone wants to reach the registered identity. Passing a call message into Voice.handleMessage(...) will always result in a CallInvite in the PENDING state.

    A cancel message is sent when a call made to this identity is prematurely disconnected by the caller, when the call is rejected, when the call is ignored, or when the call is accepted due to an outstanding infrastructure issue. Passing a cancel message into Voice.handleMessage(...) will result in a callback from MessageListener.onCallInvite(...) in the CANCELED state for the following scenarios:

    • If the caller prematurely disconnected the call.
    • If a callee did not accept or reject the call (e.g. it was ignored).
    Passing a cancel message into Voice.handleMessage(...) will not result in any callback from MessageListener for the following scenarios:
    • This callee accepted the call.
    • This callee rejected the call.

    Providing a message that is malformed, that has not been received from Twilio will likely lead to an MessageListener.onError(MessageException messageException)

Bug Fixes

  • CLIENT-4148 - If Call.mute() fails, SDK now disconnects the call with CallConnectionErrorException in onDisconnected(...).
  • CLIENT-4162 - Set messageType of CallInvite to twilio.voice.cancel for cancelled CallInvite.
  • CLIENT-4159 - Added error code 20151 in Voice SDK. This error surfaces when Twilio fails to authenticate with the token provided. For details please refer to the Programmable Voice SDK Error Codes Page.

Enhancements

  • CLIENT-4010 - Improved errorMessage in RegistrationException.

Known issues

  • CLIENT-2985 IPv6 is not supported.

2.0.0-beta24

November 3, 2017

Bug Fixes

  • CLIENT-4099 Emulators and devices that fail to start/open the audio device now return an AudioDeviceErrorException in onConnectFailure(...)

Known issues

  • CLIENT-2985 IPv6 is not supported.

2.0.0-beta23

October 20, 2017

Features

  • CLIENT-3987 Initialization and destruction of the VOIP stack has been moved off of the UI thread. Previously calling connect and disconnect would result in a significant amount of work done on the UI thread. We have moved this work to a dedicated thread such that any operations performed on the UI thread by the app developer will not be blocked by these operations.
  • CLIENT-4106 CallGenericErrorException and CallTransportException have been removed from CallException.java. CallConnectionError has been added to CallException.java to reflect failures due to connectivity errors.

Known issues

  • CLIENT-2985 IPv6 is not supported.

2.0.0-beta22

October 13, 2017

Enhancements

  • CLIENT-4079 Removed deprecated register(...) and unregister(...) API. Use register(Context, String, RegistrationChannel, String, RegistrationListener) and unregister(Context, String, RegistrationChannel, String, UnregistrationListener) specifying FCM or GCM as the RegistrationChannel.

Known issues

  • IPV6 is not supported.

2.0.0-beta21

October 11, 2017

Bug Fixes

  • CLIENT-4096 Use the application context internally to ensure the Connectivity Receiver can always be successfully unregistered independent of the lifecycle of Activities or Services. Fixes issue #99.

Known issues

  • IPV6 is not supported.

2.0.0-beta20

October 9, 2017

Features

  • CLIENT-4042 Added Call.Listener.onConnectFailure(...) callback. With the addition of Call.Listener.onConnectFailure, calls that fail to connect will result in Call.Listener.onConnectFailure and always return a CallException providing more information about what failure occurred. If the call fails after being connected via Call.Listener.onConnected the failure will be reported in Call.Listener.onDisconnected. Calling disconnect() prior to a call being connected will result in Call.Listener.onDisconnected so long as the disconnect() itself does not result in an error.

Known issues

  • IPV6 is not supported.
  • CLIENT-4096 The context associated with the ConnectivityReceiver may be leaked if an Activity or Service context is passed resulting in a crash as reported in issue #99. To workaround this issue you need to pass the application context to Voice.call(context.getApplicationContext(), ...), CallInvite.accept(context.getApplicationContext(), ...), and CallInvite.reject(context.getApplicationContext()).

2.0.0-beta19

October 4, 2017

Enhancements

  • Upgraded to Android Oreo from Nougat.

Bug Fixes

  • CLIENT-4083 Fixed an issue of uncaught runtime IllegalArgumentException thrown by JNI.

Known issues

  • IPV6 is not supported.
  • CLIENT-4096 The context associated with the ConnectivityReceiver may be leaked if an Activity or Service context is passed resulting in a crash as reported in issue #99. To workaround this issue you need to pass the application context to Voice.call(context.getApplicationContext(), ...), CallInvite.accept(context.getApplicationContext(), ...), and CallInvite.reject(context.getApplicationContext()).

2.0.0-beta18

September 26, 2017

Enhancements

  • CLIENT-3899 Call.Listener.onDisconnected(...) will be raised within 1 second after calling Call.disconnect().
  • CLIENT-3990 A Call will be disconnected after 10 seconds if it fails to connect under poor network conditions.

Known issues

  • IPV6 is not supported.
  • CLIENT-4096 The context associated with the ConnectivityReceiver may be leaked if an Activity or Service context is passed resulting in a crash as reported in issue #99. To workaround this issue you need to pass the application context to Voice.call(context.getApplicationContext(), ...), CallInvite.accept(context.getApplicationContext(), ...), and CallInvite.reject(context.getApplicationContext()).

2.0.0-beta17

September 5, 2017

Bug Fixes

  • Registration support via Google Cloud Messaging(GCM) has been added in addition to Firebase Cloud Messaging (FCM). Registration is now supported via GCM or FCM. The register/unregister methods have been deprecated in favor of new register/unregister methods that allows you to specify the RegistrationChannel: GCM or FCM when registering and unregistering the application.
  • Voice SDK lets you select the specific Twilio data center used when your Call connects to Twilio. The details of this feature are covered in Regions.

Known issues

  • IPV6 is not supported.

2.0.0-beta16

August 15, 2017

Bug Fixes

  • CLIENT-3961 Fixed issue #83 where unregistration failed on devices with API level 18 or lower.
  • CLIENT-3960 Fixed a native crash when mute is called right before calling disconnect.

Known issues

  • IPV6 is not supported.

2.0.0-beta15

July 26, 2017

Bug Fixes

  • CLIENT-3823 Fixed an issue where SDK was surfacing Call.Listener#onDisconnect multiple times
  • CLIENT-3860 Fixed an issue where Call.Listener#onDisconnect was fired early
  • CLIENT-3755 VoiceException#setExplanation is not a public API now

Known issues

  • IPV6 is not supported.
  • Unregistration may fail on devices with API level 18 or lower. The details of this issue are covered in issue #83.

2.0.0-beta14

June 27, 2017

Bug Fixes

  • CLIENT-3743 Fixed an issue where calls could not be made after a call reject followed by network loss.
  • CLIENT-3791 Fixed an issue where calls could not be made after network loss while making a call.

Known issues

  • IPV6 is not supported.

2.0.0-beta13

June 21, 2017

Bug Fixes

  • CLIENT-3763 Fixed an issue with no audio in incoming calls after rejecting a call.
  • CLIENT-3701 Added granular error descriptions for registration failures resulting from invalid access tokens.

Known issues

  • IPV6 is not supported.

2.0.0-beta12

June 13, 2017

Bug Fixes

  • CLIENT-3729 JNI crash when making a call with no network. This fixes issue #60 and issue #61 reported on GitHub.
  • CLIENT-3739 JNI crash when accepting or rejecting a call with no network.

Known issues

  • IPV6 is not supported.

2.0.0-beta11

June 9, 2017

Bug Fixes

  • CLIENT-3710 Fixed an issue where call was not disconnected even after calling Call.disconnect().

Known issues

  • IPV6 is not supported.
  • CLIENT-3729 JNI crash when making a call with no network. Issue#61 reports the same issue.

2.0.0-beta10

June 1, 2017

Bug Fixes

  • CLIENT-3682 Fixed a crash that was caused by calling Call.mute() in CallState.CONNECTING state.
  • CLIENT-3685 Fixed an issue where a new Call could not be initiated right after disconnecting a previous Call.

Known issues

  • IPV6 is not supported.

2.0.0-beta9

May 31, 2017

Bug Fixes

  • CLIENT-3646 Rejecting a call should not require RECORD_AUDIO permission. This fixes issue #50 reported on GitHub.
  • CLIENT-3640 Making or receiving a call using invalid access token will return detailed error description and code. Details of the error codes are listed here.

Known issues

  • IPV6 is not supported.

2.0.0-beta8

May 16, 2017

Bug Fixes

  • CLIENT-3633 Removed STUN lookup. This fixes issue #47 reported in github.

Known issues

  • IPV6 is not supported.

2.0.0-beta7

May 10, 2017

Bug Fixes

  • CLIENT-3633 CallException now includes more granular errors and error messages related to invalid access token.
  • CLIENT-3590 Added PJSIP as a standalone LogModule. Added Voice.getModuleLogLevel() method.
  • CLIENT-2601 Fixed the issue where a Call did not disconnect with complete network loss.

Known issues

  • IPV6 is not supported.
  • Occasional JNI crash with release build. Crash is caused by NoSuchFieldError while looking for STUN server address. This issue in github reports this behavior. We are working on it, will be fixed in 2.0.0-beta8 release.

2.0.0-beta6

April 27, 2017

Bug Fixes

  • CLIENT-3591 Media session gets destroyed right after a call is disconnected.

Known issues

  • IPV6 is not supported.
  • Occasional JNI crash with release build. Crash is caused by NoSuchFieldError while looking for STUN server address. This issue in github reports this behavior. We are working on it, will be fixed in 2.0.0-beta8 release.

2.0.0-beta5

April 12, 2017

Features

  • Registration support via Firebase Cloud Messaging (FCM) has been added in favor of Google Cloud Messaging (GCM). Registration via GCM is no longer supported in the SDK. Please follow these steps to migrate from an older beta release
  • API Changes :
    • The VoiceClient class is now called Voice.
    • Voice.handleMessage provides a mechanism for passing FCM data payloads and will result in a CallInvite or an error via MessageListener.
    • Removed CallInvite.isValidMessage() and CallInvite.isCancelled() utility methods in favor of using MessageListener.
    • Call.Listener callbacks onDisconnected(Call call) and onDisconnected(Call call, CallException callException) have been combined into a single callback onDisconnected(Call call, CallException). CallException will typically be null unless an error occurred resulting in a disconnect.

Bug Fixes

  • CLIENT-3544 Fixed disconnect failure while sending a string of DTMF digits.

Known issues

  • IPV6 is not supported.

2.0.0-beta4

February 16, 2017

Features

  • Introduced a new object model:
    • Consolidated OutgoingCall and IncomingCall into a single class - a Call.
    • Introduced a single Call.Listener to replace OutgoingCall.Listener and IncomingCall.Listener.
    • Introduced CallInvite, removed IncomingCallMessage and IncomingCallMessageListener.
  • Enabled Secure Real Time Protocol (SRTP). Both signaling and media are encrypted now.

Bug Fixes

  • Fixed CallException message to not include the error code (issue#8).

Known issues

  • IPV6 is not supported.

2.0.0-beta3

October 25, 2016

Enhancements

  • Updated setLogLevel() and setModuleLogLevel() API signatures - they no longer require application context

2.0.0-beta2

October 14, 2016

Enhancements

  • Added javadoc for IncomingCallMessage

2.0.0-beta1

October 13, 2016

Enhancements

  • Uses Google Cloud Messaging (GCM) push notifications for signaling incoming calls
  • Uses Twilio Access Tokens for authentication/authorization
  • Supports bluetooth devices

Fixes

  • N/A

Known Issues

  • CLIENT-2985 IPv6 not supported
  • CLIENT-3099 Disconnected callback is not emitted after network change for outgoing calls

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.

Loading Code Sample...