Android SDK release notes


Released 17h Sep 2021


  • Support unattended transfers

  • Handle updated group events to Groups service

  • Expose group id when the contact source is Group

  • Make User model parcelable

  • Expose Contact on delete contact event

  • Allow user to hold and unhold a conference

  • Add new reason TemporarilyUnavailable to Invitation states

  • Add Do Not Disturb support

  • Expose caller information from the QSS invitation

Bug Fixes

  • Stop QSS reconnections when the socket is stopped

  • Add an optional name to a PSTN participant

  • Wait for QSS to connect to expose its session ID

  • Apply caller model in the Invitation service

  • Avoid to delete session info if the restore does not fail because it is invalid

  • Enable HardwareAcousticEchoCanceler based on user settings

Breaking changes

  • The secondary constructor of Contact has been deleted.

  • The onContactDeleted event now returns a Contact object instead of a String identifier.

  • The session id is now obtained via the method getSessionId (and its Rx version).

  • The model of the caller information in the qss invitations has been changed. In this new model the display name, user name, contact name and the user identifier are exposed.


Released 14th May 2021

This is the first SDK native version. It provides basic audio and video calling functionalities. This version is a native SDK thus it provides faster performance and offers a better user experience, supporting both online and offline operations. As it leverages the potential of the mobile device and its hardware, this version consumes also less battery, video encoding/decoding is smoother, call setup is faster and the overall user experience is better than in the hybrid version.

On the other hand, please note that the following features are not available yet in this version: messaging, call holding, call-history details, unattended transfers, whiteboard, meetings, kick an user from a multiparty call, voicemail integration and do-not-disturb mode.


  • Consume info from login and set cookie

  • Apply new Invitation model

  • Resolve groups for conferenceLog

  • Migrate Quobis wac socket to Websocket

Breaking changes

  • The ConferenceEntry model now uses a new implementation for the participant and invitation list

Bug Fixes

  • Set context on login via REST (QA-2082)

  • Filter results from user resolver (QA-1845)

  • Ensure the order of conferencelog entries (QA-1844)


Released January 2021


  • Add methods to update and retrieve the local user

  • Add presence subscription support with new contacts

  • Implement the new contact service using userContact service and addressBook service

  • Add the Oauth service to fetch the available providers

  • Implement address book events

  • Implementation of the new address books service

  • Implementation of the group service

  • Add method to resolve user by userId

  • Expose a Users service in order to get the users matching a certain identifier

  • Model the possible states of Presence

  • Add a method to check if the user has a specific Permission

  • Add switch camera method to the conference

  • Expose if the recording is enabled in the Conference

  • Register the push token internally when the session is connected

  • Distinguish when the user has logged out in session state

  • Expose the reason why session is disconnected

  • Expose the current session state and notify it when a listener is added

  • Add a method to check if a conference related to an invitation id is still pending

  • Allow to add more than one listener for contact events

  • Add joinOnAnswer parameter to invite method

  • Expose changes in conference invitations as events

  • Allow to recover all the invitations related to the conference

  • Add a method to create the conference using Rx

  • Specify a date range when fetching conference log entries

  • Add rx methods to Contacts service

  • Add method to get all conference participants

  • Expose if the user mediatypes are enabled

  • Notify the current conference state when user sets the conference listener

  • Expose the caller and the current state in Conference class

  • Expose conference id in canceled and finished conference events

  • Allow to specify the contacts sources when fetching them

  • Expose QSS session id

  • Expose record state

  • Register the push token internally when the session is connected

  • Distinguish when the user has logged out in session state

  • Add logout to the example app

  • Expose the reason why session is disconnected

Breaking changes

  • There is no longer a public object in the session service to expose the user of the current session. Instead, there is a new method getLocalUser and a new variable with the value of their username.

  • The presence events are not longer emitted by the presenceUpdated observable. Instead, there are two observables (localPresenceUpdated and remotePresenceUpdated) that will emit the proper events. The callbacks of PresencesListener have been updated consequently

  • The User model now uses the Email and Phone classes instead of Strings.

  • The deprecated Contacts has been removed in favor of Agenda service. All the related classes have been removed too. The methods in Presences service that were using the previous Contact model are not longer available.

  • The Contact model now uses Email and Phone classes instead of the generic Address class. This Address class has been removed.

  • There is a new Presence model. All the fields remain the same except the online attribute, that has been replaced by a state to include more options (online, offline, away or busy).

  • The method registerPushToken has been removed in favour of setPushToken. This new method can be invoked even if the session is not connected and the SDK will register the token in the right moment.

  • The session states have been changed and now, when the session could not be established, the state will be Error (not Disconnected). Besides, the disconnected state includes the information about if the user has logged out or the session is only suspended.

  • The methods to join the conference, update the media and invite a new participant receive now the context as parameter. The configure method in SippoClient does not require the context as parameter.

  • The session state is now a sealed class. The error state has been replaced by disconnected with the proper reason.

  • The method configure in SippoClient now receives the server url as a URL instead of as a String.

  • The class SessionState has been renamed as Session and has been moved to session package.

  • The method to add a list of contacts is not available any more.

  • All public methods in contacts service are using now the Contact class in sipposerver-client module.

  • Multiple callbacks and rx variables has been renamed in order to make the public API consistent.

  • The reactive methods and variables in Conferences will be accesible through conferences.rx. The method setListener has been replacer by addListener in order to allow having more than one listener. The callback onConferenceReceived receives now the conferences service as parameter and onConferenceStateChanged has been renamed as onConferenceStateReceived (also, it is invoked whenever a listener is added too). ConferenceError class has been moved to the model sub-package in conference.

  • All methods, data classes, events and listeners related to conference log have been moved to its own package and service. The reactive methods and variables are included now in the ConferenceLogRx class. The public data class have been renamed in order to remove the prefix “Sippo-“.

  • SessionStateListener has been renamed to be consistent with other listeners

  • The reactive methods and variables in sessions will be accessible through sessions.rx field.

  • SessionState has been renamed as State. The callback onSessionStateChanged has been replaced with `onSessionStateReceived and it is invoked when the listener is set (besides when the session state changes).

  • The methods connect, disconnect and restore don’t return any async result. The session state will change accordingly instead.

  • The session state listener is added in Sessions service instead of SippoClient and is allowed to have more than one listener. Session related classes has been moved to session package.

  • PresenceListener is called PresencesListener now.

  • Contacts service does not include methods to synchronize local contacts or delete them from server any more. The source type device has been removed.

  • The reasons for a rejected invitation state have been renamed.

  • SessionStateDelegate, ConferencesDelegate and ConferenceLogDelegate has been renamed. Also, setDelegate methods has beed renamed as setListener. All listener classes have been moved to a listener package inside their previous package.

  • The method setListener has been replaced by addListener and removeListener

  • The contactIdFromWac property in Contact model is called id now.

  • The methods using RX will be accessible through the rx property in Contacts service.

  • The methods to add contacts receive a contact instance directly instead of a contact builder. The public model for contacts is called Contact instead of SippoContact, and the ContactsDelegate is now ContactsListener.

  • Preview method does not return any async result.

  • Join method does not return any async result.

  • Remove isInvited attribute in the conference. Invite method return the result as an invitation event. Added onInvitationChanged callback in ConferenceListener.

  • Cancel invitation method does not return any result.

  • The service Invitations who managed invitations request no longer exists. The attribute isAnswerToInvitationRequest in Conference has been removed and the method invite does not receive a replyOf parameter any more. The attribute invitationRequest in SippoInvitationInfo has been also deleted.

  • The method create in Conferences does not require to pass the listener for the conference any more.

  • getConferenceEntries receives now a before and after parameters to specify in which date range the fetched entries should be.

  • The method swap(usernameA, usernameB) has been renamed as swapVideos. The method swap(username) has been removed. In order to swap the local video with a remote one, the first method could be used specifying the current user as one of the those received by the method.

  • getRemoteParticipants has changed to getParticipants and now returns all participants in the conference including the user with their mediaTypes (the method getRemoteMediaTypes does not exist any more). The localMediaTypes in the Conference has been replaced by two boolean properties: is LocalAudioEnabled and isLocalVideoEnabled.

  • The list of localMediaTypes now is a list with pairs indicating the media type and whether it is enable or not.

  • The methods to get the view rendering the video no longer exists. It should be used the methods displayLocalVideo and displayRemoteVideo instead.

  • The methods expel, getRemoteParticipants and enableRemoteVideo use Participant objects instead of String. The observable participantAdded also uses this class. The parameter participant in getRemote video has been renamed as username to help remarking that it does not use the Participant class. The callbacks in ConferenceListener now receive the conference as parameter too.

  • There is only a hangup method to end the conference (instead of decline/leave methods). The cancelInvite method has been renamed as cancelInvitation.

  • Conference methods no longer receive the application context as a parameter.

  • Conference has now a callback and an observable to notify when the state changes. The specific callbacks/observables for notifying when the conference finishes or when the invitation is canceled have been removed.

  • Since the conference includes now the information about the caller, the callback onConferenceReceived does not have the caller as a separated parameter any more and the observable newConferenceEvents only emits the conference.

  • The field roomId has been renamed as id. Callbacks onConferenceFinished and onConferenceCanceled receive the conference id as parameter and the related events are now exposed as a Single with the conference id instead of as a Completable.

  • The method add in Contacts receives now a new SippoContactBuilder as parameter instead of a SippoContact.

  • SippoService can now return different error types, not only CapabilityError.

  • Several changes in SippoContact model:

    • No longer includes the thumbnailUri field. The method getThumbnail in Contacts has been deleted accordingly.

    • The field isFavourite has been renamed as favorite.

    • The field contactIdFromDevice visibility is not public any more.

    • The field emails are now a list of strings because Email model has been removed.

  • Source contact types are using now the Source model imported from sippo-server so the one in Contacts has been removed.

  • Added a sources parameter in getContacts method.

  • The reactive methods in Conference have been moved to a specific class, ConferenceRx. This class is accessible as a property in Conference class, so the methods should now be invoked as conference.rx.methodName.

  • The models FeedConstraint and ConferenceConstraint have been replaced by one only model, MediaType. Public API methods will now use MediaType class instead of the old ones. The userConstraints property and getRemoteParticipantsConstraints method have been renamed as localMediaTypes and getRemoteMediaTypes respectively to be consistent.

  • The method getRemoteParticipants in Conference now uses the ParticipantStatus class from Janus module.

  • All public API methods that were using SippoConferenceError now use ConferenceError instead.

  • The interface SippoConferenceDelegate has been replaced by ConferenceListener. Also, the methods create and acceptInvitationRequest in Conferences have been changed.

  • All public API methods that were using SippoConference now use Conference instead. Also, the parameter order for join, update and getConferenceEntries methods has been changed.

  • All public API methods that were using Result now use Either instead. Also, the Optional class has been moved from client.common to common package.

  • The method previewMedia has been renamed to preview and no longer receives the prepareAudio and context parameters.

  • The methods to join the conference, update the media and invite a new participant receive now the context as parameter. The configure method in SippoClient does not require the context as parameter.

  • The session state is now a sealed class. The error state has been replaced by disconnected with the proper reason.

  • The method configure in SippoClient now receives the server url as a URL instead of as a String

  • The class SessionState has been renamed as Session and has been moved to session package