Release Notes - Android SDK


  • Make native debug symbols compatible with Crashlytics. See in debug symbols archive for more information.
  • Improve initializing of video calling functionality. Clients not using video calling should expect memory consumption improvement.See how the Sinch In-app Voice and Video SDK for Android is evolving and find out about new features and bug fixes.
  • Creating a SinchClient with empty FCM or HMS registration token is now forbidden (IllegalArgumentException is thrown).


  • Minimise number of calls to Sinch Platform REST API.
  • Improve handling of default audio device during call when Bluetooth device is connected.
  • Distribute Kotlin documentation (dokkaHtml format). Documentation is available inside 'docs/reference' folder of the SDK archive and online at . If you still need documentation in Javadoc format it is available as a part of the Sinch SDK archive inside 'docs' folder.


  • Fix sample applications crash when during the call app was moved to background and then, back into the foreground.
  • Refactor SDK files into Kotlin. All API methods that could throw IllegalArgumentException when passing null values are now handled on language level and @NonNull / @Nullable annotations when referencing from Java. SDK can still be used in Java Android applications. Only extra step required is that you add 'org.jetbrains.kotlin:kotlin-stdlib' library inside your build.gradle file. See samples for reference.


  • Improve handling of default audio device during call when Bluetooth device is connected.


  • Update WebRTC to M108. This update moves away from WebRTC version that was marked as vulnerable by Google. See for more information.
  • Improve AudioController disable / enable speaker logic when Bluetooth device is connected


  • Fix issue that could cause native crash when initializing WebRTC library.
  • Improve caching of instance data. Clients should expect to have onCredentialsRequired callback being executed less often.


  • Fix issue causing audio not being streamed properly when callee didn't initially grant microphone permissions.


  • Add automatic hang up when call is lingering in failed state for too long.


  • Improve creating the call when application is not in foreground.


  • Remove SinchHelpers class.
  • Add SinchPush class responsible for handling logic connected with delivering push messages for incoming calls.
  • Add SinchClient.builder() and UserController.builder() to access SinchClient and UserController builders respectively.
  • Remove deprecated SinchClient.startListeningOnActiveConnection() and SinchClient.stopListeningOnActiveConnection().
  • Add SinchClient.unregisterPushToken(PushTokenUnregistrationCallback). Client no longer needs to create UserCojjntroller to remove the push token.
  • Add PushTokenUnregistrationCallback informing about push token unregistration events.
  • Fix bug connected with logging audio routing changes.
  • Add possibility to specify CLI while creating each outgoing call. See updated CallController call initialization methods for reference.
  • Remove SinchClientBuilder.callerIdentifier() method that assigned a common CLI to entire Sinch client instance.
  • Introduce MediaConstrains object for in app calling. Combine CallController.callUserVideo() and CallController.callUser() methods into single CallController.callUser(MediaConstraints). To initiate a video call create a MediaConstraint object passing 'true' into the constructor. See samples directory for fully working examples.
  • Rename CallClient to CallController.
  • Fix exception handling configuration for ProGuard code obfuscation. and can throw IOException. Clients should update their applications to handle these exceptions. See samples for possible implementation.
  • Update buildscript sample files.
  • Rename PushProfile to PushConfiguration


  • Fix minor bugs connected with automatic routing functionality


  • Add audio routing logging.


  • Fix issue that prevented user that did not start Sinch client for over a year authenticating on Sinch backend.


  • Fix authorization problems connected with incorrect timestamp parsing when running on 32-bit simulator.


  • Refactor SinchClientBuilder to follow UserControllerBuilder pattern for specifying Push Profile configuration.
  • Add FcmPushProfileBuilder allowing to specify senderID - Firebase sender ID to be used by the Sinch SDK for sending push notifications registrationToken - FCM registration token for this device
  • Remove Firebase and Firebase Messaging dependency. Sinch SDK is no longer responsible for acquiring FCM registration tokens using its sender ID. Client should use FcmPushProfileBuilder while creating SinchClient and UserController instances, to provide parameters (Firebase sender ID and FCM registration token) needed to initialize FCM Managed Push functionality. Client is also responsible for re-registering Push Profile whenever FCM token changes. See at sinch-rtc-sample-video-push to see possible code implementation of above.
  • Remove SinchClient.setSupportManagedPush(boolean). Managed push functionality is currently automatically enabled if PushProfile is defined while building SinchClient instance. If SinchClient instance is built without defining any push profile the functionality is disabled.
  • Deprecate SinchClient.startListeningOnActiveConnection(). Remove non-push sample application.


  • Upgrade gradle build tools versions of samples.


  • Fix issue that prevented user that did not start Sinch client for over a year authenticating on Sinch backend.


  • Fix screenshot and filter video sample applications threading issues.


  • Update WebRTC to M96.


  • Refactor AudioController.enableAutomaticAudioRouting() to accept AudioController.AudioRoutingConfig parameter.
  • Fix potential crash in the JNI layer that could happen if null-body reply is unexpectedly returned from the backend.


  • Add android:exported attribute to the internal service manifest in conformance with new Android S+ rules (Android 12).


  • Fix crash on Huawei devices that support Google Play Services when Huawei HMS Messaging is used.


  • Fix crash in the AudioManagerInternal caused by unregistering of not-yet-registered Wired Headset Receiver.


  • Stop storing Sinch FCM token in SharedPreferences. Sometimes when the new FCM token is acquired, if update of the SharedPreferences fails/slow - the old FCM token is sent again to the Sinch backend.


  • Removed SinchClient.setMediaHandover(boolean) , SinchClientBuilder.enableMediaHandover(boolean) , and Call.setMediaHandover() . Media handover and reconnection behaviour is now handled internally.


  • Check CAMERA permission before video capture starts to avoid crash in case the user revoked permission. If not granted - black video. If granted during the call, video can be resumed with call to Call.resumeVideo() . The responsibility to ensure that CAMERA permission is granted lies on the application.
  • Fixed crash when setting video frame listeners during audio-only call.
  • Removed Beta.setMediaHandoverConfig(SinchClient client, MediaHandoverConfig config) and MediaHandoverConfig class as a whole. Media handover behaviour is now handled internally.


  • Fixed memory leak in LocalVideoFrameListener and RemoteVideoFrameListener implementations.


  • Switch to new release tools and process.


  • Fixed crash in SinchClient when the client is terminated during incoming call processing.
  • Added VideoController setLocalVideoResizeBehaviour() to allow full-screen local video experience.


  • Failure of internal database initialization at SinchClient/UserController creation time will now cause IOException, instead of failing silently.
  • Fixed rare crash in SinchClient that happened during 'fast' start after graceful termination.
  • Updated sample application with SinchClient lifecycle management comments.


  • Aligned SinchClient registration experience with UserController's one by extending SinchClientListener interface and providing a way to register a user with the HMS Push Token via SinchClient by adding Huawei HMS specific methods to SinchClientBuilder:
    • hmsDeviceToken(String deviceToken);
    • hmsApplicationId(String applicationId);
  • Extended SinchClientListener interface by both UserRegistrationCallback and PushTokenRegistrationCallback interfaces.
  • Removed SinchClientListener.onRegistrationCredentialsRequired(SinchClient client, ClientRegistration registrationCallback) in favor of inherited UserRegistrationCallback.onCredentialsRequired(ClientRegistration registrationCallback).
  • Renamed PushTokenRegistrationCallback methods to follow the same naming pattern:
    • tokenRegistered() -> onPushTokenRegistered()
    • tokenRegistrationFailed(...) -> onPushTokenRegistrationFailed(...)
  • Removed deprecated SinchClient's stop() and unregisterPushProfile() APIs.


  • Removed MissingFCMException.
  • Added SinchHelper methods to check availability of the Google FCM or Huawei HMS services.


  • Moved from deprecated appcompat to AndroidX.


  • Fixed potential crash in logging when receiving weird-looking media streams.


  • Added support specifying/modifying call headers via ICE callback response.


  • Sinch environment host changed to
  • Removed support for legacy push data ( SinchClient.registerPushNotificationData() ).
  • Removed ErrorType.CAPABILITY , ErrorType.OTHER . Added ErrorType.GENERIC .
  • Removed deprecated SinchClient.stop() (and SinchClientListener.onClientStopped() ). Use SinchClient.terminateGracefully() instead.
  • CallDetails getStartedTime() , getEstablishedTime() and getEndedTime() return java.util.Date instead of long.
  • AudioController has new APIs: isMute() and isSpeakerOn() .
  • Fixed AudioController bug that change microphone state when disengaging Automatic Audio Routing.

** NEW SDK for In-app Voice & Video Platform

We'd love to hear from you!
Rate this content:
Still have a question? Ask the community.