Android Meeting SDK v5.7.1
1628720704927
Here are the release notes for the Android Meeting SDK v5.7.1
Android SDK Google Play Store impact
Action needed: Please update your app to use Android SDK version 5.7.1 or greater as soon as possible and update it on the Google Play Store.
Details: Google Store policies do not support the APK-based update code in the Zoom Android SDK product prior to version 5.7.1. This code was inherited from the Zoom client’s code base and was never used by the SDK. However, since it exists in the SDK, Google may discover it in a scan of your app on the Play store. Zoom has removed this code in the 5.7.1 release. If your app is available on the Play Store and it uses a version prior to 5.7.1, Google may suspend your app.
Client SDK is now officially ‘Meeting SDK’
To better reflect the functionality of the Client SDK for Android, iOS, macOS, Windows, and Web, we’re changing its name to the Meeting SDK. This does not impact any of the SDKs directly.
Using RESTful API for PreMeeting services
The RESTful API parameters and requests to perform meeting management are constantly enhanced to support the latest Zoom meeting features. The SDK services do not get updated as often. Therefore, we are removing the pre meeting services in the SDK as of this release. Please consider using the RESTful API as a replacement. Here are the API for meeting management:
Schedule a meeting: https://marketplace.zoom.us/docs/api-reference/zoom-api/meetings/meetingcreate
Get a meeting: https://marketplace.zoom.us/docs/api-reference/zoom-api/meetings/meeting
Update a meeting: https://marketplace.zoom.us/docs/api-reference/zoom-api/meetings/meetingupdate
Delete a meeting: https://marketplace.zoom.us/docs/api-reference/zoom-api/meetings/meetingdelete
Please follow the instructions in https://marketplace.zoom.us/docs/api-reference/using-zoom-apis to use Zoom RESTful APIs.
Please also consider using the following webhooks:
Meeting deleted: https://marketplace.zoom.us/docs/api-reference/webhook-reference/meeting-events/meeting-deleted
Meeting created: https://marketplace.zoom.us/docs/api-reference/webhook-reference/meeting-events/meeting-created
Meeting updated: https://marketplace.zoom.us/docs/api-reference/webhook-reference/meeting-events/meeting-updated
See the webhook reference for more details: https://marketplace.zoom.us/docs/api-reference/webhook-reference.
Added
Consent dialog in the following scenarios(both Zoom UI and Custom UI):
Recording/Archiving/Live Streaming in meetings or in webinars.
Join webinar as a panelist
Promote an attendee to panelist
The host tries to unmute the current user
New interfaces to retrieve legal disclaimers. See https://marketplace.zoom.us/docs/sdk/native-sdks/ui-notices for more information on how to display these in your app.
In
InMeetingService.java
:- boolean isLiveTranscriptLegalNoticeAvailable() - String getLiveTranscriptLegalNoticesPrompt() - String getLiveTranscriptLegalNoticesExplained()
In
InMeetingShareController.java
:- boolean isWhiteboardLegalNoticeAvailable() - String getWhiteboardLegalNoticesPrompt() - String getWhiteboardLegalNoticesExplained()
In
InMeetingChatController.java
:- boolean isMeetingChatLegalNoticeAvailable() - String getChatLegalNoticesPrompt() - String getChatLegalNoticesExplained()
In
InMeetingQAController.java
:- boolean isQALegalNoticeAvailable() - String getQALegalNoticesPrompt() - String getQALegalNoticesExplained()
In
InMeetingAnnotationController.java
:- boolean isAnnotationLegalNoticeAvailable() - String getAnnotationLegalNoticesPrompt() - String getAnnotationLegalNoticesExplained()
In
MeetingService.java
:- String getWebinarRegistrationLegalNoticesPrompt() - WebinarRegistLegalNoticeContent getWebinarRegistrationLegalNoticesExplained()
New interfaces to handle SSO login.
In
ZoomSDK.java
:- String generateSSOLoginURL(String ssoDomainPrefix) - void handleSSOLoginURIProtocol(String uriProtocol)
When implementing the SSO login flow, pass in your company domain or vanity URL prefix to the
generateSSOLoginURL
interface. It will return an URI to start the SSO login process. Open the URI with an external browser. Upon successful login on the browser, Zoom will return a URI. Redirect back to your application with the URI and pass the URI to thehandleSSOLoginURIProtocol
to complete the SSO login in SDK.
New interfaces to enhance breakout rooms.
In
IBOAdmin.java
:- boolean inviteBOUserReturnToMainSession(String userId)
In
IBOCreator.java
:- boolean setBOOption(BOOption option) - BOOption getBOOption()
In
InMeetingBOController.java
:- BOStatus getBOStatus()
In
InMeetingBOControllerListener.java
:- void onBOStopCountDown(int seconds) - void onHostInviteReturnToMainSession(String name, ReturnToMainSessionHandler handler) - void onBOStatusChanged(BOStatus status)
A new interface to get the shared bitmap.
In
InMeetingShareController.java
:- Bitmap getShareBitmap()
An option in meeting settings to hide the record button.
no_record option
inMeetingOptions.java
A new interface to check whether the user is in the waiting room.
In
InMeetingService.java
:- isInWaitingRoom()
A new callback when the host changes the share settings.
In
InMeetingShareListener.java
:- void onShareSettingTypeChanged(ShareSettingType type)
New callbacks for the events when the in-meeting feature buttons are being pressed.
In
ZoomUIDelegate.java
:- boolean onClickEndButton() - boolean onClickAudioButton() - boolean onClickVideoButton() - boolean onClickShareButton() - boolean onClickMoreButton() - boolean onClickParticipantsButton()
A new callback to get the result when asking an attendee to be promoted.
In
InMeetingWebinarListener.java
:- void onAttendeePromoteConfirmResult(boolean agree, long userId)
A new callback when trying to invalidly reclaim the host key.
In
InMeetingServiceListener.java
:- void onInvalidReclaimHostkey()
A new interface to configure aspect ratio in Zoom UI.
In
MeetingSettingsHelper.java
:- void setVideoAspectRatio(VideoAspectRatioType aspectRatioType) - VideoAspectRatioType getVideoAspectRatio()
Changed & Fixed
Renamed the
participant_id
tocustomer_key
inMeetingOptions.java
. This does not impact the underlying functionality.Renamed the
getParticipantID()
togetCustomerKey()
and addedsetCustomerKey()
inInMeetingUserInfo.java
.Fixed an issue where the SDK crashed when opening the QA UI in Custom UI.
Fixed an issue where the default UI’s meeting end message was displayed when using Custom UI.
Fixed an issue where the
onAnnotationSupportChange
callback was not triggered after leaving the meeting.Fixed an issue where the shared image could not change with the zoom in and zoom out finger gesture.
Fixed an issue where the
showMiniMeetingWindow
interface was not working as expected.Fixed an issue where the
allowParticipantsToRename
interface was not working.Fixed an issue where the
showZoomChatUI
did not work for webinar attendees.Fixed an issue where the SDK auth failed when the
shrinkMode
was set to "strict".Fixed an issue where the
onChatMessageNotification
callback was not triggered after sending an individual message.
Removed
The following interfaces that were being announced "deprecated" in the previous releases have been removed.
In
ZoomSDK.java
:- public void initialize(Context context, String appKey, String appSecret, ZoomSDKInitializeListener listener) - public void initialize(Context context, String appKey, String appSecret, boolean autoRetryVerifyApp, ZoomSDKInitializeListener listener) - public void initialize(Context context, String appKey, String appSecret, String domain, ZoomSDKInitializeListener listener) - public void initialize(Context context, String appKey, String appSecret, String domain, ZoomSDKInitializeListener listener, boolean enableLog) - public void initialize(Context context, String appKey, String appSecret, String domain, ZoomSDKInitializeListener listener, boolean enableLog, int logSize) - public void initialize(Context context, String appKey, String appSecret, String domain, boolean autoRetryVerifyApp, ZoomSDKInitializeListener listener) - public void initialize(Context context, String appKey, String appSecret, String domain, boolean autoRetryVerifyApp, ZoomSDKInitializeListener listener, boolean enableLog) - public void initialize(Context context, String appKey, String appSecret, String domain, boolean autoRetryVerifyApp, ZoomSDKInitializeListener listener, boolean enableLog, int logSize)
Resolution: Use existing method
public void initialize(Context context, ZoomSDKInitializeListener listener, ZoomSDKInitParams params)
. For more information, see SDK initialization.
In
MeetingItem.java
:- public String getInvitationEmailContentWithTime()
Resolution: Use new interface
asyncGetInviteEmailContent
inMeetingItem.java
.
In
MeetingSettingsHelper.java
:- public void setPreferredCameraAntibanding(String antibanding)
This is no longer supported.
In
InMeetingWebinarController.java
:- MobileRTCSDKError allowAttendeeChat(); - MobileRTCSDKError disallowAttendeeChat();
Resolution: Use
InMeetingChatController#allowAttendeeChat(MobileRTCWebinarChatPriviledge priviledge)
.
In
InMeetingServiceListener.java
:- void onUserVideoStatusChanged(long userId); - void onUserAudioStatusChanged(long userId); - void onMeetingSecureKeyNotification(byte[] key)
Resolution: Use
InMeetingServiceListener#onUserVideoStatusChanged(long userId,VideoStatus status)
andInMeetingServiceListener#onUserAudioStatusChanged(long userId,AudioStatus audioStatus)
.
In
InMeetingService
:- public byte[] getE2EMeetingSecureKey() - public boolean handleE2EMeetingExternalSessionKeyReady
Both no longer supported.
In
MeetingActivity.java
:- void raiseHand() // Use InMeetingService#RaiseMyHand - void lowerHand() // Use InMeetingService#lowerHand - boolean isRaisedHand() // Use InMeetingUserInfo#isRaisedHand - void switchToNextPage() - void switchToPreviousPage() - void switchToActiveSpeaker() - void switchToDriveScene() - void switchToVideoWall() // Use methods with the same signatures in ZoomUIService - void onMyRaiseLowerHandStatusChanged(boolean isRaiseHand)
Resolution: see notes above.
In
NetworkConnectionListener
:onSSLCertVerifyNotification(SSLCertVerificationHandler)
In
MeetingActivity
:- void onClickParticipants() // use ZoomUIDelegate#onClickParticipantsButton() instead - void onAudioStatusChanged() // use InMeetingServiceListener#onUserAudioStatusChanged(long userId,AudioStatus audioStatus) instead - void onMyVideoStatusChanged() // use InMeetingServiceListener#onUserVideoStatusChanged(long userId) instead - void onMeetingConnected() // use MeetingServiceListener#onMeetingStatusChanged() instead - void onSilentModeChanged(boolean inSilentMode) // use InMeetingServiceListener#onSilentModeChanged() instead - void onMyAudioTypeChanged() // use InMeetingServiceListener#onMyAudioSourceTypeChanged instead - void onMyAudioSourceTypeChanged() // use InMeetingServiceListener#onMyAudioSourceTypeChanged instead - onClickEndButton() // use ZoomUIDelegate#onClickEndButton() instead - void onJoinMeetingConfirmed() // use InMeetingServiceListener#onMeetingNeedPasswordOrDisplayName() instead - Bitmap getShareBitmap() // use InMeetingShareController#getShareBitmap() instead - setCustomizedMeetingId(String meetingId) // use MeetingOptions.custom_meeting_id instead - boolean isMeetingConnected() // use InMeetingService#isMeetingConnected() instead - boolean isInSilentMode() // use InMeetingService#isInSilentMode() instead - boolean isSharingOut() // use InMeetingShareController#isSharingOut() instead - boolean isSharingScreen() // use InMeetingShareController#isSharingScreen() instead - void showLeaveDialog() // use ZoomUIDelegate#onClickEndButton() instead - void showAudioOptions() // use ZoomUIDelegate#onClickAudioButton() instead - void showVideoOptions() // use ZoomUIDelegate#onClickVideoButton() instead - void showParticipants() // use ZoomUIDelegate#onClickParticipantsButton() instead - void showShareOptions() // use ZoomUIDelegate#onClickShareButton() instead - void doAudioAction() // use ZoomUIDelegate#onClickAudioButton() instead - void showMoreOptions() // use ZoomUIDelegate#onClickMoreButton() instead - boolean isVideoMuted() // use InMeetingVideoController#isMyVideoMuted() instead - void muteVideo(boolean mute) // use InMeetingVideoController#muteMyVideo(boolean mute) instead - boolean canSwitchCamera() // use InMeetingVideoController#canSwitchCamera() instead - void switchToNextCamera() // use InMeetingVideoController#switchToNextCamera() instead - boolean isAudioConnected() // use InMeetingAudioController#isAudioConnected() instead - boolean isAudioMuted() // use InMeetingAudioController#isMyAudioMuted() instead - boolean connectVoIP() // use InMeetingAudioController#connectAudioWithVoIP() instead - void disconnectAudio() // use InMeetingAudioController#disconnectAudio() instead - void muteAudio(boolean mute) // use InMeetingAudioController#muteMyAudio(boolean mute) instead - boolean isCMREnabled() // use InMeetingCloudRecordController#isCloudRecordEnabled() instead - boolean isCMRInProgress() // use InMeetingCloudRecordController#isCloudRecordInProgress() instead - void startCloudRecord() // use InMeetingCloudRecordController#startCloudRecord() instead - void stopCloudRecord() // use InMeetingCloudRecordController#stopCloudRecord() instead - boolean canSwitchAudioSource() // use InMeetingAudioController#canSwitchAudioOutput() instead - boolean isAllowToChat() // use InMeetingChatController#isChatDisabled() instead - void showChatsView() // use InMeetingService#showZoomChatUI() instead
Resolution: see notes above.
Did you like this update?