Changelog: Video SDK - Android - 2.6.0

Released: 2026-06-24 Updated: 2026-07-01

Visit Changelog

Summary: Breaking changes include updated audio configuration API naming for consistency, and modifications to external video source handling with new I420Limited and I420Full color range support. Adds a pre-connection flow to accelerate session joins, machine-answer detection for PSTN call-outs, and comprehensive audio QoS statistics. Additional improvements include user failover status tracking, expanded command channel payload limits (now 1024 bytes), and new callbacks for subsession status changes that trigger when users join or leave subsessions.

Breaking Changes

  • Support the I420Limited and I420Full color ranges for the external video source.

    • Add a new property externalVideoSourceDataFormat to ZoomVideoSDKSessionContext.

      public ExternalSourceDataFormat externalVideoSourceDataFormat = ExternalSourceDataFormat.ExternalSourceDataFormat_I420_Full;
      
    • Remove the ExternalSourceDataFormat format parameter from sendVideoFrame in ZoomVideoSDKVideoSender.

      public interface ZoomVideoSDKVideoSender {
          // ...
          void sendVideoFrame(ByteBuffer frameBuffer, int width, int height, int frameLength, int rotation, ExternalSourceDataFormat format);
          // change to ->
          void sendVideoFrame(ByteBuffer frameBuffer, int width, int height, int frameLength, int rotation);
      }
      
  • Rename several audio configuration APIs for naming consistency.

    • Rename isMicOriginalInputEnable() to isMicOriginalInputEnabled() in ZoomVideoSDKAudioSettingHelper
    • Rename isFileTransferEnable() to isFileTransferEnabled() in ZoomVideoSDKSession.
  • Joining or leaving a subsession now triggers the onSubSessionStatusChanged and onSessionLeave callbacks in ZoomVideoSDKDelegate.

    • New callbacks in ZoomVideoSDKDelegate.

      public interface ZoomVideoSDKDelegate {
          void onSubSessionStatusChanged(ZoomVideoSDKSubSessionStatus status, List<SubSessionKit> subSessionKitList);
          void onSessionLeave(ZoomVideoSDKSessionLeaveReason reason);
      }
      
    • New enumeration values in ZoomVideoSDKSessionLeaveReason.

      public enum ZoomVideoSDKSessionLeaveReason {
          /** User leaves current session because joining a subsession. */
          ZoomVideoSDKSessionLeaveReason_JoinSubsession,
          /** User leaves current session because returning to the main session. */
          ZoomVideoSDKSessionLeaveReason_ReturnToMainSession
      }
      

Added

  • Add machine-answer detection for PSTN call-out, so the host can tell whether a call was answered by a person or forwarded to voicemail.

    • New property in ZoomVideoSDKInvitePhoneUserInfo.

          /**
           * @brief true: Enable machine-answer detection for this callout, otherwise false.
           */
          public boolean bDetectMachine;
      
    • New enum value in ZoomVideoSDKPhoneStatus.

      /** The call was answered by machine. */
      PhoneStatus_AnsweredByMachine
      
  • Add a pre-connection (two-step join) flow to speed up the actual session join.

    • New interfaces in ZoomVideoSDK.

      public abstract ZoomVideoSDKSession prepareJoin(ZoomVideoSDKSessionContext params, ZoomVideoSDKPreJoinParam preJoinParam);
      public abstract int commitJoin();
      public abstract int cancelPrepareJoin();
      
    • New class ZoomVideoSDKPreJoinParam.

      public class ZoomVideoSDKPreJoinParam {
          public int timeoutInterval = 0;
      }
      
    • New error codes in ZoomVideoSDKErrors.

      int Errors_Session_PreJoin_Not_In_Flow;
      int Errors_Session_PreJoin_Already_Commit;
      int Errors_Session_PreJoin_Timeout;
      
  • Provide audio QoS statistics data.

    • New interface in ZoomVideoSDKQOSSendStatistics.

      long getHeaderBytesSent();
      
    • New interfaces in ZoomVideoSDKQOSRecvStatistics.

      long getHeaderBytesReceived();
      int getPacketsDiscarded();
      int getFecPacketsReceived();
      int getFecPacketsDiscarded();
      double getJitterBufferTargetDelay();
      double getJitterBufferMinimumDelay();
      long getTotalSamplesReceived();
      long getConcealedSamples();
      long getSilentConcealedSamples();
      long getConcealmentEvents();
      long getInsertedSamplesForDeceleration();
      long getRemovedSamplesForAcceleration();
      double getTotalSamplesDuration();
      double getAudioLevel();
      double getTotalAudioEnergy();
      
  • Support user failover status change.

    • New interface in ZoomVideoSDKDelegate.

      public interface ZoomVideoSDKDelegate {
          // ...
           void onUserFailoverStatusChanged(ZoomVideoSDKUser user, boolean isInFailover);
      }
      
    • New interface in ZoomVideoSDKUser.

      public interface ZoomVideoSDKUser {
         boolean isInFailover();
      }
      

Changed

  • Increase the command channel payload size limit to 1024.