Partial support for Android 12

  • This version includes partial Support for Android 12, with some known issues:

    • When there is an incoming phone call while in a meeting, after finishing the phone call and returning to the meeting, the audio in the meeting will stop working.

    • If the Android device is connected to a Bluetooth audio output, the audio might come out of the speaker instead of the Bluetooth device.


  • Support for virtual background.

    • New interfaces in InMeetingVirtualBackgroundController:

      boolean isSupportVirtualBG();
      List<IVirtualBGImageInfo> getBGImageList();
      MobileRTCSDKError addBGImage(Bitmap bitmap);
      MobileRTCSDKError removeBGImage(IVirtualBGImageInfo bgImageInfo);
      MobileRTCSDKError useBGImage(IVirtualBGImageInfo bgImageInfo);
      MobileRTCSDKError useNoneImage();
    • New interfaces in IVirtualBGImageInfo:

      VBType getVbType();
      boolean isSelect();
      String getImagePath();
    • New enum in VBType:

    • New interface in InMeetingService:

      InMeetingVirtualBackgroundController getInMeetingVirtualBackgroundController();
  • The ability to notify users that the meeting has enabled auto-recording.

    • New interfaces in MeetingParameter:

      public MeetingType meeting_type;
      public boolean isViewOnly;
      public boolean is_auto_recording_local;
      public boolean is_auto_recording_cloud;
      public long meeting_number;
      public String meeting_topic;
      public String meeting_host;
    • New enum in MeetingType:

    • New callback in MeetingServiceListener:

      void onMeetingParameterNotification(MeetingParameter meetingParameter);
      • Triggered when the meeting status changes to MEETING_STATUS_INMEETING.

  • New errorCode in`ZoomError`:

    public final static int ZOOM_ERROR_AUTHRET_KEY_OR_SECRET_ERROR = 6;
    public final static int ZOOM_ERROR_AUTHRET_ACCOUNT_NOT_SUPPORT = 7;
    public final static int ZOOM_ERROR_AUTHRET_ACCOUNT_NOT_ENABLE_SDK = 8;
  • Support spotlighting in Custom UI. See isUserVideoSpotLighted(long), onSpotlightVideoChanged(boolean), and spotLightVideo(boolean, long) in the API reference for details.


  • Removed restrictions on the send raw data interfaces, allowing all Developers to send raw data.

Breaking changes

  • Interface changes in InMeetingServiceListener:

    • Renamed onVideoOrderUpdated to onHostVideoOrderUpdated.

    • Added a new parameter, senderId, to onClosedCaptionReceived(String message). The interface is now onClosedCaptionReceived(String message,long senderId).

    • The callback onMeetingLeaveComplete will not be triggered when the meeting is reconnecting. Reconnecting to the meeting will trigger the callback onMeetingStatusChanged and have meetingStatus MEETING_STATUS_RECONNECTING. If your integration uses the callback onMeetingLeaveComplete, please migrate to using the callback onMeetingStatusChanged.

  • Interface change in InMeetingLiveTranscriptionListener:

    • A new parameter has been added to onLiveTranscriptionMsgReceived(String msg, MobileRTCLiveTranscriptionOperationType type), now the callback is onLiveTranscriptionMsgReceived(String msg,long speakerId, MobileRTCLiveTranscriptionOperationType type).


  • Issue where the InMeetingChatController.sendChatToUser is not working in E2EE meetings.

  • Issue where the interface activeShareUserID() in InMeetingService returned a wrong userID.

  • Issue where the layout of the gallery view is inconsistent compared with the Zoom client UI when there are 3 participants in the meeting.

  • Issue where the “Leave Meeting” button in the recording consent dialog is not compatible with the single Activity apps.

  • Issue where the recording consent dialog does not display in Custom UI mode with Hilt.

  • Issue where “Unknown error” is returned when joining a meeting after the user was removed.

  • Issue where inconsistent error codes returned when authenticating the SDK twice with empty key and secret.

  • Issue where the sample app shows incorrect legal notice when screen share begins in Custom UI.

  • Issue where callbacks are not being triggered after initializing the SDK.

  • Issue where sample app crashes in Custom UI when enabling the "Don't keep activities" setting.

  • Issue that allowed the coHost to be demoted in a webinar.

  • Issue where an unassigned user can not choose a breakout room (BO) when the BOs allow the attendee to choose a BO to join.

  • Issue where the coHost can call getBODataHelper() and getBOAssistantHelper() and update the comments in InMeetingBOController.


  • Deleted unused interfaces in MeetingItem:

    public String getMeetingTopic();
    public boolean setMeetingTopic(String topic);
    public long getStartTime();
    public boolean setStartTime(long time);
    public int getDurationInMinutes();
    public boolean setDurationInMinutes(int duration);
    public String getPassword();
    public void setPassword(String password);
    public boolean getCanJoinBeforeHost();
    public void setCanJoinBeforeHost(boolean canJoinBeforeHost);
    public boolean isUsePmiAsMeetingID();
    public boolean setUsePmiAsMeetingID(boolean usePmiAsMeetingID);
    public String getTimeZoneId();
    public boolean setTimeZoneId(String timeZoneId);
    public boolean isHostVideoOff();
    public void setHostVideoOff(boolean hostVideoOff);
    public boolean isAttendeeVideoOff();
    public void setAttendeeVideoOff(boolean attendeeVideoOff);
    public AudioType getAudioType();
    public void setAudioType(AudioType audioType);
    public String getThirdPartyAudioInfo();
    public void setThirdPartyAudioInfo(String thirdPartyAudioInfo);
    public long getMeetingNumber();
    public long getMeetingUniqueId();
    public boolean isRecurringMeeting();
    public int getRepeatType();
    public boolean setRepeatType(int type);
    public long getRepeatEndTime();
    public boolean setRepeatEndTime(long time);
    public String getMeetingId();
    public boolean isPersonalMeeting();
    public boolean isWebinarMeeting();
    public MobileRTCSDKError asyncGetInviteEmailContent();
    public boolean isOnlySignUserCanJoin();
    public void setOnlySignUserCanJoin(boolean onlySignJoin);
    public void setSpecifiedDomains(List<String> specifiedDomains);
    public List<String> getSpecifiedDomains();
    public String getScheduleForHostEmail();
    public boolean setScheduleForHostEmail(String scheduleForEmail);
    public AutoRecordType getAutoRecordType();
    public void setAutoRecordType(AutoRecordType autoRecordType);
    public void setHostInChinaEnabled(boolean isHostInChinaEnabled);
    public boolean isHostInChinaEnabled();
    public void setAvailableDialinCountry(MobileRTCDialinCountry diallinCountry);
    public MobileRTCDialinCountry getAvailableDialinCountry();
    void setEnableWaitingRoom(boolean enable);
    boolean isEnableWaitingRoom();
    void setEnableLanguageInterpretation(boolean enable);
    boolean isEnableLanguageInterpretation();
    void setEnableMeetingToPublic(boolean isPublic);
    boolean isEnableMeetingToPublic();
    void setAlternativeHostList(List<Alternativehost> list);
    List<Alternativehost> getAlternativeHostList();