All notable changes to this project will be documented in this file.
3.14.0
Releases - 3.14.0
3.13.0
Releases - 3.13.0
3.12.0
Releases - 3.12.0
3.11.3
Releases - 3.11.3
3.11.2
Releases - 3.11.2
3.11.1
Releases - 3.11.1
3.11.0
Releases - 3.11.0
3.10.1
Releases - 3.10.1
3.10.0
Releases - 3.10.0
3.9.2
Releases - 3.9.2
3.9.1
Releases - 3.9.1
3.9.0
Releases - 3.9.0
3.8.0
Releases - 3.8.0
3.7.0
Releases - 3.7.0
3.6.0
Releases - 3.6.0
3.5.0
Releases - 3.5.0
3.4.0
Releases - 3.4.0
3.3.0
Releases - 3.3.0
3.2.1
Releases - 3.2.1
3.2.0
Releases - 3.2.0
3.1.0
Releases - 3.1.0
3.0.0
Releases - 3.0.0
2.8.0
Releases - 2.8.0
2.7.0
Releases - 2.7.0
2.6.0
Releases - 2.6.0
2.5.0
Releases - 2.5.0
2.4.0
Releases - 2.4.0
2.3.0
Releases - 2.3.0
2.1.1
Releases - 2.1.1
2.1.0
Releases - 2.1.0
2.0.0
Releases - 2.0.0
1.4.0
Releases - 1.4.0
1.3.0
Releases - 1.3.0
0.2.0
Releases - 0.2.0
Released on 13 November, 2024
- New Enum
SpeechEnhancementResult
to represent the result of speech enhancement operation. - New API added
Phone.useLegacyReceiverNoiseRemoval(useLegacy: Boolean)
to enable legacy receiver side noise removal. This will disable the new receiver side speech enhancement. - New API added
Phone.isReceiverSpeechEnhancementEnabled(): Boolean
to check if receiver side speech enhancement is enabled by default. - New API added
Phone.enableSpeechEnhancement(enable: Boolean, callback: CompletionHandler<SpeechEnhancementResult>)
to enable or disable speech enhancement for all calls. - New API added
Call.isReceiverSpeechEnhancementEnabled(): Boolean
to check if speech enhancement is enabled for the call. - New API added
Call.enableSpeechEnhancement(enable: Boolean, callback: CompletionHandler<SpeechEnhancementResult>)
to enable or disable speech enhancement for the call. - New error message
NonExistentCallPull
to represent the error when trying to pull a non-existent call by dialing *11. - New error messages
InternalError
,UserNotFound
,UserPending
,UserVerificationFailed
,UserNeedsReactivation
when user logs in via OAuth flow.
- Fixed: Issue with Move meeting from SDK to other clients.
Released on 21 August, 2024.
- New Enum
RecordAudioDumpResult
to represent error while doing audio dump related operations. - New API added
Call.isRecordingAudioDump()
to check if the audio dump is being recorded for ongoing meeting/call. - New API added
Call.canStartRecordingAudioDump(callback: CompletionHandler<RecordAudioDumpResult>)
to check if the audio dump can be recorded for ongoing meeting/call. - New API added
Call.startRecordingAudioDump(context: Context, callback: CompletionHandler<RecordAudioDumpResult>)
to start recording the audio dump for ongoing meeting/call. - New API added
Call.stopRecordingAudioDump(callback: CompletionHandler<RecordAudioDumpResult>)
to stop recording the audio dump.
- Fixed: Bug related to deleting virtual background which is set for preview.
- Fixed: Mic issue when meeting is in phone earpiece mode.
- Fixed: Security fix for WME.
Released on 8 July, 2024.
- New Enum
CompanionMode
to set the companion mode for Move Meeting. - New observer
CallObserver.onMoveMeetingFailed(call: Call?)
to notify when attempting to move meeting fails. - New API
CalendarMeeting.isMoveMeetingSupported
to check if move meeting feature is supported.
isOngoingMeeting
andeventId
fields are added to the CalendarMeeting class.- MediaOption class is updated to include
getCompanionMode
andsetCompanionMode
APIs
Released on 7 Jun, 2024.
- The dial & dialPhoneNumber APIs will have the error description in case of failure.
- Access token invalidation or expiry will result in the SDK APIs returning Unauthorized error inside the completion handlers.
- The
Phone.processPushNotification(msg : String, handler: CompletionHandler<PushNotificationResult>)
handler to return error in case of any failure. The error object will have the error code and error description. - Completion handlers returning InternalError will have error descriptions.
Released on 7 May, 2024.
- New interface
WebexAuthDelegate
to receive all authentication related event callbacks. - New callback function
onReLoginRequired()
inWebexAuthDelegate
to notify when user auth token becomes stale or revoked and re login is required.
Released on 8 April, 2024.
- H264 prompt is removed for video and screen share flows.
- Made Webex class and
webex.initialize()
method thread safe and added check to avoid multiple initializations. - Fixed: Call Failed issue during rejoin after host ends the meeting for all and starts again.
- Fixed: Logs not persisting after killing app and relaunching.
Released on 13 February, 2024.
- New Enum
ErrorCode.CANNOT_START_INSTANT_MEETING
to indicate an error condition whenever you start an instant meeting. - New API
getLiveAnnotationHandle(): LiveAnnotations
to get an instance of LiveAnnotations object. - New API
inviteParticipant(invitee: String, callback: CompletionHandler<InviteParticipantError>)
to invite a participant to a call. - New API
reclaimHost(hostKey: String = "", callback: CompletionHandler<ReclaimHostError>)
to reclaim the host role using host key. - New API
makeHost(participantId: String, callback: CompletionHandler<MakeHostError>)
to assign the host role to a participant. - New Interface
LiveAnnotations
which defines the methods related to live annotations feature. - New Interface
LiveAnnotationListener
to represent the events for live annotations. - New Class
LiveAnnotationRenderer
to manage the rendering of the annotations data on screen. - New Class
LiveAnnotationLayer
to manage the annotations layer and its properties. - New Class
CloseLiveAnnotationButton
to manage the close button for live annotations. - New Enum
InviteParticipantError
to represent the result of inviteParticipant API. - New Enum
LiveAnnotationErrorCode
to represent the error codes for live annotations. - New Enum
LiveAnnotationsPolicy
to represent the available policies for live annotations. - New method
CallMembership.isHost(): Boolean
which returns a boolean value indicating if participant is host or not. - New method
CallMembership.isCohost(): Boolean
which returns a boolean value indicating if participant is cohost or not. - New method
CallMembership.isSelf(): Boolean
which returns a boolean value indicating if member is self user or not. - New method
CallMembership.isPresenter(): Boolean
which returns a boolean value indicating if participant is sharing their screen or not.
- Messaging module removed in size optimized WxC SDK.
Released on 12 December, 2023.
- New interface
ProductCapability
which represents the product capabilities for the logged in user. - New API added
getProductCapability(): ProductCapability
to get the supported capability of the current user.
- Fixed: Dynamic delivery related issue in Webex-Wxc variant.
- General improvements and bug fixes.
Released on 16 October, 2023.
- New interface
VoicePushInfo
to represent the caller related information received from VoIP payload. - New interface
Presence
to represent the Presence info for a person. - New interface
PresenceHandle
to represent the contacts whose presence state are being watched. - New interface
ClosedCaptionsInfo
to represent the ClosedCaptionsInfo of a call. - New API added
Webex.parseVoIPPayload(payload: String) : VoicePushInfo
to parse and return the caller related information from the VoIP notification. - New API added
Webex.decryptCUCMPushMessage(payload: String): PushRESTPayload
to decrypt the payload received via PushREST for an incoming CUCM call. - New API added
PushRESTPayload.getDisplayName(): String
to get the display name that is present in the CUCM PushRest notification. - New API added
PushRESTPayload.getPushId(): String
to get the pushId that is present in the CUCM PushRest notification. - New API added
Phone.isH264LicenseActivated(): Boolean
to check the status of H264 license prompt acceptance. - New API added
PersonClient.startWatchingPresences(contactIds: List<String>, handler: CompletionHandler<Presence>): List<PresenceHandle>
to start watching the presence of the given contactIds. - New API added
PersonClient.stopWatchingPresences(presenceHandles: List<PresenceHandle>)
to stop watching presence status of the list of presence handle that are provided as input. - New API added
Call.setSpokenLanguage(language: String, callback: CompletionHandler<SpokenLanguageSelectionError>)
to set the spoken language for the call. - New API added
Call.setTranslationLanguage(language: String, callback: CompletionHandler<TranslationLanguageSelectionError>)
to set the translation language for the call. - New API added
Call.getClosedCaptionsInfo(): ClosedCaptionsInfo
to get the closed captions info object for the call. - New API added
Call.getClosedCaptions: List<CaptionItem>
to get the list of caption items from the beginning of this call. - New API added
Call.isClosedCaptionsAllowed(): Boolean
to check if closed captions is allowed for the call. - New API added
Call.isClosedCaptionsEnabled(): Boolean
to get the current state of the closed caption. If enabled, returns true, otherwise false. - New API added
Call.getCallerNumber(): String
to get the caller number of the active call. - New API added
Call.isTransferSupported(): Boolean
to check if the transfer is supported for the active call. - New API added
Call.isAddParticipantSupported(): Boolean
to check if the add participant is supported for the active call. - New API added
Call.getCurrentAudioOutput(): AudioOutputMode?
to get the current output audio mode like Bluetooth or Speaker etc. - New Enum
PresenceStatus
to represent the presence status of a person. - New Enum
SpokenLanguageSelectionError
to represent error for setting current spoken language. - New Enum
TranslationLanguageSelectionError
to represent error for setting current translation language. - New Callback added
CallObserver.onClosedCaptionsArrived(closedCaptions: CaptionItem)
to notify notify when a caption item object arrives for the call. - New Callback added
CallObserver.onClosedCaptionsInfoChanged(closedCaptionsInfo: ClosedCaptionsInfo)
to notify when closed caption info object changes, for e.g. when spoken language is changed. - Ability to support assisted transfer when the SDK client already has 2 active calls.
- Subscribing for certain call events via mercury is now supported.
- Optimised WxC Calling only sdk for runtime performance.
- Fixed: RemoteSendingVideo coming as true before the call gets connected in WebexCalling calls.
- Fixed: Bluetooth devices not getting auto connected during call when they are enabled
- Fixed: 1080P video transmission issue in specific devices.
- Added completion handler in
Call.switchAudioOutputMode(audioOutputMode: AudioOutputMode, callback: CompletionHandler<Boolean>)
to return the status of the operation.
Released on 11 August, 2023.
- New API added
Phone.dialPhoneNumber(dialString: String, option: MediaOption, callback: CompletionHandler<Call>)
to dial only phone numbers. - New API
CallHistoryRecord.isPhoneNumber()
to denote if the number dialled in call record was a phone number.
- Removed Camera permissions and H264 prompt for audio only flows.
- Fixed: Call failed or meeting failure issue due to mediaTimeout.
Released on 19 June, 2023.
- New API added
Call.getExternalTrackingId()
to get the external tracking id for corresponding call. Applicable only for WxC calls. - Supports Webex Calling NewCall notifications payload through webhook.
- FIXED: Self video turning off in case of poor uplink event.
- Fixed: Crash in
Webex.signOut
API
Released on 05 June, 2023.
- New SDK variant Webex-Wxc released, a light weight SDK for WebexCalling which can be created as an Android Dynamic module.
- New Callback added
CallObserver.onStartRinging(call:Call?, ringerType: Call.RingerType)
, when a ringer has to be started. - New Callback added
CallObserver.onStopRinging(call:Call?, ringerType: Call.RingerType)
, when a ringer has to be stopped. - New Class added
AdvancedSettings.EnablePhotoCapture
to enable capturing photo. - New Class added
ShareConfig
a defined data type to represent the share screen config. - New Enum added
Call.RingerType
for a ringerType to denote the type of tone to be played/stopped - New Enum added
CallMembership.DeviceType
for device types - New Enum added
Call.ShareOptimizeType
to represent the OptimiseType for share screen - New Data added
Person.encodedId
to get base64 encoded ID of the person - New API added
CallMembership.getDeviceType()
to get device type joined by this CallMembership. - New API added
CallMembership.getPairedMemberships()
to get all memberships joined using deviceType "Room". - New API added
Call.isVideoEnabled()
to indicate whether video calling is enabled for the user in Control hub. - New API added
Call.getShareConfig()
to get the share screen optimisation type of the call. - New Feature added to support multiple active calls.
- New Feature added to support end-to-end encrypted meetings
- Metrics added to monitor SDK performance, track login flows & diagnostics events like token related errors.
- New API added
Call.enableReceivingNoiseRemoval(enable: Boolean, callback: CompletionHandler<ReceivingNoiseRemovalEnableResult>)
to enable or disable receiving noise removal functionality for incoming PSTN calls. - New API added
Call.getReceivingNoiseInfo()
to get the info object which contains information on Receiving noise removal state.
- Screen sharing now have optimisation options as part of share config in
startSharing()
API - Now FedRamp can be enabled through authenticators
- Now
CallObserver.RemoteCancel
event will be fired when host ends meeting for all or kicked by host. - FIXED: Webex calling failures for certificate issues
- FIXED:
PersonClient.getMe()
api returns multiple callbacks for errors - FIXED:
MessagesUpdated
event getting called for internal provisional messages. - FIXED:
MessagesUpdated
event not getting called with decrypted content in some cases, after list message API was called. - FIXED: Crash when setting multiple call observers from different threads.
Released on 24 January, 2023.
- New SDK variant
WebexSDK-Meeting
, a light weight meeting-only SDK(doesn’t include calling). - New API
setCallServiceCredential(username: String, password: String)
to set username and password for authentication with calling service. - New API
onUCLoginFailed(failureReason: UCLoginFailureReason)
to notify app whenever CUCM server login or Webex Calling login fails. - New API
Call.isWebexCallingOrWebexForBroadworks()
to denote if this call is Webex or Broadworks call. - New API
Call.directTransferCall(toPhoneNumber: String, callback: CompletionHandler<DirectTransferResult>
to transfer the active call to the given number. - New API
Call.switchToVideoCall(callId: String, callback: CompletionHandler<SwitchToAudioVideoCallResult>)
to switch the current Webex Calling call to video call. - New API
Call.switchToAudioCall(callId: String, callback: CompletionHandler<SwitchToAudioVideoCallResult>)
to switch the current Webex Calling call to audio call. - New API
CallHistoryRecord.isMissedCall()
to denotes if call record was a missed call. - New API
Phone.processPushNotification(msg : String, handler: CompletionHandler<PushNotificationResult>)
to process the payload received in FCM service for Webex calling. - New API
Phone.setPushTokens(bundleId : String, deviceId : String, voipToken : String)
to set params required for Push notifications of Webex calling. - New API
Phone.getCallingType()
to get the type of Calling supported for logged in user. - New API
Phone.buildNotificationPayload(notification: Map<String, String>, notificationId: String)
to build the payload from FCM notification. - New API
Phone.connectPhoneServices(callback: CompletionHandler<PhoneConnectionResult>)
to login into phone services for CallingType.WebexCalling. - New API
Phone.disconnectPhoneServices(callback: CompletionHandler<PhoneConnectionResult>)
to log out from phone services for CallingType.WebexCalling. - New API
SpaceClient.isSpacesSyncCompleted()
to denote if space sync is completed or not. - New Callback
SpaceClient.setOnInitialSpacesSyncCompletedListener(handler: CompletionHandler<Void>)
to set a listener to receive completion status for initial database sync. - New Callback
SpaceClient.setOnSpaceSyncingStatusChangedListener(handler: CompletionHandler<Boolean>)
to set a listener to receive sync status for space changes. - Added new Enum
UCLoginFailureReason
to indicate the failure reason for CUCM login or WebexCalling login - Added new Enum
CallingType
to represent calling service type of logged-in user - Added new Enum
PhoneConnectionResult
to indicate the result of call connection towards phone services. - Added new Enum
SwitchToAudioVideoCallResult
to indicate the result of switching call, from audio to video or vice versa.
- Maven arifact id changed from
androidsdk
towebexsdk
- FIXED: Space load issue and app crash on first install of KitchenSink.
- Deprecated API
setCUCMCredential(username: String, password: String)
instead usesetCallServiceCredential(username: String, password: String)
Released on 30 September, 2022.
- New case
forbidden
in enumCreatePersonError
,UpdatePersonError
- Three new cases
INVALID_PASSWORD
,CAPTCHA_REQUIRED
,INVALID_PASSWORD_WITH_CAPTCHA
to enumErrorCode
- New interface
Captcha
to represent the Captcha object. - New interface
Breakout
A data type to represent the breakout. - New interface
BreakoutSession
A data type to represent the breakout session. - New API
Phone.isRestrictedNetwork(): Boolean
to check whether the device is in a restricted network. - New API
Space.isExternallyOwned(): Boolean
to check whether space is owned by external org. - New API
Phone.enableStreams(enable : Boolean)
to enable or disable all media streams on active calls. - New API
Call.getCorrelationId(): String
to get the correlationId for that particular call. - New API
MediaOption.setCaptchaId(captchaId: String)
to set unique id for the captcha. - New API
MediaOption.getCaptchaId(): String
to get unique id for the captcha. - New API
MediaOption.setCaptchaCode(captchaCode: String)
to set captcha verification code to be entered by user. - New API
MediaOption.getCaptchaCode(): String
to get the captcha verification code. - New callback
Call.joinBreakoutSession(session: BreakoutSession)
to join the Breakout Session manually by passing theBreakoutSession
if host has enabled allow join session later. - New callback
Call.returnToMainSession()
to return to main session. - New callback
CallObserver.onBreakoutError(error: BreakoutSession.BreakoutSessionError)
to notify when any breakout api returns error. - New callback
CallObserver.onBreakoutUpdated(breakout: Breakout)
to notify when Breakout is updated. - New callback
CallObserver.onBroadcastMessageReceivedFromHost(message: String)
to notify when host broadcast the message to the session. - New callback
CallObserver.onHostAskingReturnToMainSession()
to notify when host is asking participants to return to main meeting. - New callback
CallObserver.onJoinableSessionUpdated(breakoutSessions: List<BreakoutSession>)
to notify when list of join breakout session changes. - New callback
CallObserver.onJoinedSessionUpdated(breakoutSession: BreakoutSession)
to notify when joined Breakout session is updated. - New callback
CallObserver.onReturnedToMainSession()
to notify when returned to main session. - New callback
CallObserver.onSessionClosing()
to notify when Breakout session is closing. - New callback
CallObserver.onSessionEnabled()
to notify when Breakout session is enabled. - New callback
CallObserver.onSessionJoined(breakoutSession: BreakoutSession)
to notify when Breakout session is joined. - New callback
CallObserver.onSessionStarted(breakout: Breakout)
to notify when Breakout session is started. - New callback
Phone.refreshMeetingCaptcha(handler: CompletionHandler<Captcha>)
to refresh the Captcha object to get a new Captcha code. - New callback
setOnRestrictedNetworkStatusChange(handler: CompletionHandler<Boolean>)
to monitor restricted network status changes.
Roles
,licenses
andsiteUrls
fields are added to thePerson
class.- Fixed - Crash while doing multiparty calls in Android SDK 3.5
- Fixed - Grid view Auxstream video hanging when navigating to another screen and back.
Released on 24 August, 2022.
call.setMediaStreamCategoryC(participantId: String, quality: MediaStreamQuality)
to pin the participant's stream with the specified params if it does not already exist. Otherwise, update the pinned participant's stream with the specified params.call.removeMediaStreamCategoryC(participantId: String)
to remove the pinning of a participant's stream.Webex.startUCServices()
to start login process of CUCMWebex.retryUCSSOLogin()
in case UC sso login expires or requires a retry.Webex.forceRegisterPhoneServices()
to handleRegisteredElsewhere
error.- New class
CallHistoryRecord
. webex.ucCancelSSOLogin()
which cancels currents SSO authentication for CUCM login.- New callback
showUCSSOBrowser()
to notify when user needs to show SSO Browser. - New callback
hideUCSSOBrowser()
to notify when user needs to hide SSO Browser. - New callback
onUCSSOLoginFailed(failureReason: UCSSOFailureReason)
to notify app when SSO login fails. - New Enum
UCSSOFailureReason
to indicate CUCM SSO Login failure reason.
- Fixed - Added Support for message with video and thumbnail
- Fixed - Post message api was returning the message object with mentions as empty array
- Fixed - List message api bug fixes to return correct data before a provided date or id and honouring max values
- Fixed - CUCM login for SSO authentication
- Fixed - CUCM call history
- Renamed callback
showUCSSOLoginView(ssoUrl: String)
toloadUCSSOViewInBackground(ssoUrl: String)
Phone.getCallHistory()
to returnCallHistoryRecord
s instead ofSpaces
Released on 7 June, 2022.
MessageObserver.MessageUpdated
event to get events when some existing messages are updated.Call.getMediaStreams(): List<MediaStream>
to get all opened media streamsCall.setMediaStreamCategoryA(duplicate: Boolean, quality: MediaStreamQuality)
to add the Active Speaker stream with the specified params if it does not already exist. Otherwise, update the Active Speaker stream with the specified params.Call.setMediaStreamsCategoryB(numStreams: Int, quality: MediaStreamQuality)
to set the Category-B streams to specified parametersCall.removeMediaStreamCategoryA()
to remove the active speaker streamCall.removeMediaStreamsCategoryB()
to remove the Category-B streamsCallObserver.MediaStreamAvailabilityEvent
event to know when a media stream is available or unavailableMediaStream
which represents a media stream instanceMediaStreamType
enum to represent the type of media streamMediaStreamQuality
enum to represent the quality of a media streamMediaStreamChangeEventType
enum to represent the change event type of a media stream.MediaStreamChangeEventInfo
which represents media stream change event information.
- Fixed - Virtual Background showed wrong orientation when portrait images were used to add VBG
- Fixed - Virtual background was not user specific i.e. after logout another user can see previously selected backgrounds
- Fixed -
MessageClient.postToPerson
api issue when JWT user sends a message to a person with whom they have never interacted before. - Support for 1080p video resolutions
Released on 19 April, 2022.
- New enum
Call.MediaQualityInfo
to denote media quality - New observer
CallObserver.onMediaQualityInfoChanged
to get media quality events Text.html(html: String): Text
to send html textText.markdown(markdown: String): Text
to send markdown text
- Fixed - Crash when remote user starts or stops sharing
- Fixed - Call pipeline improvement
- Fixed - List messages before messageId not returning messages
- Fixed - Text object type incorrect on received messages
- Fixed - Message sender details incorrect in integration usecase
- Sending multiple formats of text in the same message is not supported. Below text constuctors are deprecated
Text.markdown(markdown: String, html: String?, plain: String?): Text
Text.html(html: String, plain: String?): Text
Released on 15 February, 2022.
Call.setCameraFocusAtPoint(pointX: Float, pointY: Float): Boolean
to set the camera focus at given coordinate.Call.setCameraFlashMode(mode: FlashMode): Boolean
to set the camera flash mode.Call.getCameraFlashMode(): FlashMode
to get the camera flash mode.Call.setCameraTorchMode(mode: TorchMode): Boolean
to set the camera Torch mode.Call.getCameraTorchMode(): TorchMode
to get the camera Torch mode.Call.getCameraExposureDuration(): CameraExposureDuration
to get the exposure duration of the camera.Call.getCameraExposureISO(): CameraExposureISO
to get the exposure ISO of the camera.Call.getCameraExposureTargetBias(): CameraExposureTargetBias
to get the exposure target bias of the camera.Call.setCameraCustomExposure(duration: Double, iso: Float): Boolean
to set the camera custom exposure value using camera exposure duration and ISO.Call.setCameraAutoExposure(targetBias: Float): Boolean
to set the camera auto exposure value using camera exposure target bias.Call.setVideoZoomFactor(factor: Float): Boolean
to set the Zoom IN/OUT factor for the local camera.Call.getVideoZoomFactor(): Float
to get the local camera zoom factor.Call.takePhoto(): Boolean
to takes a snapshot of the local video view.CallObserver.onPhotoCaptured(imageData: ByteArray?)
to notify app whenever a photo is captured.Call.getWXA(): WXA
for Webex assistant and real time transcription controls.Interface WXA
A data type to represent the WebEx Assistant.class Transcription
A data type to represent a transcription object from the WebEx Assistant.
- Fixed - Camera Orientation with respect to device orientation.
- Fixed - Thumbnail for high resolution images not loading.
- Fixed - Decoding of special characters in urlencoded Guest issuer JWT token.
- Fixed - Made
exp
field as optional in Guest Issuer JWT - Fixed - Callback not being fired for deleting self membership from space.
- Fixed - Fetching inter-cluster team memberships.
- Fixed - Virtual Background Image orientation.
- Fixed - DTMF API usage.
Released on 30 November, 2021.
Call.forceSendingVideoLandscape(forceLandscape: Boolean, callback: CompletionHandler<Void>?)
to force landscape video transfer of local video view.Call.getLocusURL()
returns the locus url of the call.
- Fixed - Video resume issue when phone unlocks.
- Fixed - Space title issue for first time login.
- Fixed - setReceivingAudio() API issue when remote participant is muted.
- Fixed - CUCM login callback issue for OAuthAuthenticator.
- Fixed - Crash fix when switching between meetings or space call
Released on 25 October, 2021.
CalendarMeetingClient.list(fromDate : Date?, toDate : Date?, handler: CompletionHandler<List<CalendarMeeting>>)
- To get calendar meetings.CalendarMeetingClient.getById(meetingId : String, handler: CompletionHandler<CalendarMeeting>)
- To get a calendar meeting by id.CalendarMeetingClient.setObserver(observer: CalendarMeetingObserver?)
- To listen to calendar events (Added, Updated, Removed)- Custom token authentication
TokenAuthenticator.authorize(accessToken: String, expiryInSeconds: Int?, handler: CompletionHandler<Void>)
- To set a custom tokenTokenAuthenticator.setOnTokenExpiredListener(callback: CompletionHandler<Void>)
- Callback triggered when token has expired- Custom/Blur Background for calls
Phone.isVirtualBackgroundSupported()
to check if virtual background is supportedPhone.fetchVirtualBackgrounds(handler: CompletionHandler<List<VirtualBackground>>)
to list virtual backgroundsPhone.addVirtualBackground(image: LocalFile, handler: CompletionHandler<VirtualBackground>)
to add a virtual backgroundPhone.removeVirtualBackground(backgroundItem: VirtualBackground, handler: CompletionHandler<Boolean>)
to remove a virtual backgroundPhone.applyVirtualBackground(backgroundItem: VirtualBackground, mode: VirtualBackgroundMode, handler: CompletionHandler<Boolean>)
to apply a virtual backroundPhone.setMaxVirtualBackgroundItems(limit: Int)
to limit the number of custom virtual backgroundsPhone.getMaxVirtualBackgroundItems(): Int
to get the limit of number of custom virtual backgroundsCallObserver.onCpuHitThreshold()
- Callback to notify developer when CPU threshold is reached
- Dial callback not received.
- Meeting Signal after restart inconsistency.
- Calling Screen Infinite loading - wrong meeting Id dial.
- Re-login crash without restart of application.
- Meeting subject incorrect .
- Remote Video rendering issue when re-join meeting.
- Local video stopped after ending whatsapp/hangout call.
- Video surfaces crash on leaving meeting.
- HW Acceleration video resolution 720p.
Released on 16 August, 2021.
Phone.getServiceUrl(serviceUrlType: ServiceUrlType)
- to expose service Urls.- OAuthAuthenticator.
getAuthorizationUrl(handler: CompletionHandler<String?>)
in OAuthWebViewAuthenticator.Call.isSpaceMeeting
to check space backed meeting type.Call.isSelfCreator
to check self is the initiator of the call.Call.hasAnyoneJoined
to check anyone joined the meeting, excluding self.Call.isPmr
to check meeting is in PMR (personal meeting room).Call.isMeeting
to check the call is meeting type.Call.isScheduledMeeting
to check the call is schedule meeting type.- FedRAMP app configuration support.
OAuthWebViewAuthenticator
takes scope as a constructor parameter
Released on 24 May, 2021.
NOTE: SDK-v3 is built in Kotlin language.
- Ability to make calls via CUCM.
- Receive push notification for incoming CUCM calls.
WebexUCLoginDelegate
interface to receive webex CUCM login events.Call.startAssociatedCall(dialNumber: String, associationType: CallAssociationType, audioCall: Boolean, callback: CompletionHandler<Call>)
for CUCM callsCall.transferCall(toCallId: String)
for CUCM callsCall.mergeCalls(targetCallId: String)
for CUCM callsCall.holdCall(putOnHold: Boolean)
for CUCM callsCall.isOnHold()
for CUCM callsCall.isCUCMCall()
to check if call is CUCMCall.canShare()
to check if the call has permission to share the screenCall.getTitle()
to get the title of the callCall.muteParticipantAudio(participantId: String, doMute: Boolean)
to mute particular participantCall.muteAllParticipantAudio(doMute: Boolean)
to mute all other participants who are on call, also un-mutes the others if isMuted istrue
Call.isGroupCall()
to check if the call is Space callPhone.getCallHistory
to retrieve the collection of spaces which contains call history of One to One Spaces as well as Group type SpacesCallObserver.OnInfoChanged
- A callback whenever a call information is changed for example - a participant is added or removed from call or mute status is changedCallObserver.CallEnded
- This event is fired when the resources of the call object gets cleared after disconnection.CallSchedule.getId()
to get meeting ID of the scheduled call.CallSchedule.getMeetingLink()
to get meeting link of the scheduled call.CallSchedule.getSubject()
to get the subject of the scheduled call.NotificationCallType
enum to check if call type is Webex or CUCMCallAssociationType
enum for call transfer and mergeWebex.getCallIdByNotificationId(notificationId: String, callType: NotificationCallType)
to get the actual call id of the call based on callType.Webex.spaces.filter(query: String, handler: CompletionHandler<List<Space>>)
to search the people by email id or by name.Webex.getlogFileUri(incudeLastRunLog: Boolean)
to collect logs of SDK for dev support.Webex.base64Encode(type: ResourceType, resource: String, handler: CompletionHandler<String>)
to encode UUID as Base64Webex.base64Decode(encodedResource: String): Resource
to decode Base64 to ResourceWebex.initialize(handler: CompletionHandler<Void>)
to check if user is already logged inWebex.isUCLoggedIn()
for CUCMWebex.getUCServerConnectionStatus()
for CUCMWebex.setUCDomainServerUrl(ucDomain: String, serverUrl: String)
for CUCMWebex.enableConsoleLogger(enable: Boolean)
to enable/disable console loggingMessage.isContentDecrypted()
to check if message is decryptedgetConversationId()
,getMessageId()
,getContentIndex()
inRemoteFile
OAuthWebViewAuthenticator
takes email as a constructor parameter- Support of completion handler in
JWTAuthenticator.authorize(String jwt, CompletionHandler handler)
- Support of completion handler in
MessageClient.markAsRead(String spaceId, String messageId, CompletionHandler handler)
- In
Message.Mention
, two new fieldsstart
andend
are introduced to indicate the start and end index of mention in text message. - Support of completion handler in
setRemoteVideoRenderMode
inCall
- SSO Authenticator
- Webex.runInBackground()
- OAuthAuthenticator
refreshToken
api is removed fromOAuthWebViewAuthenticator
afterAssociated
apiupdate
api removed fromMessage
Phone.register()
andPhone.deregister()
apis are removed
Released on 2021-04-30.
- Support Multi-stream feature in group calls.
- Support message edit.
- Expose some service urls.
- Allow preview during dialling.
- Support for meeting scheduled from Webex Meetings.
- Increase the meeting number to 11 digit number.
- Add a new API
Phone.enableBackgroundConnection(boolean)
to keep receive events when app is in background. - Add a new API
Phone.enableAskingReadPhoneStatePermission(boolean enable)
enable or disable ask for read phone state permission. - Removed the API
CallMembership.getEmail()
due to privacy protection reasons. - Add a new API
CallMembership.getDisplayName()
to get the display name of the person.
- Upgrade min sdk version to 24.
- Fixed occasionally encryption failures when trying to send messages.
- Fixed screen sharing doesn't work if targetSDK >= 29.
- Fixed LocalLeft event occasionally triggered incorrect.
- Fixed MediaOption.setPin() doesn't appear to work.
Released on 2020-12-14.
- Support to notify a space call status through SpaceObserver
- Support to notify muted by host during a space call.
- Support to enable audio Background Noise Removal(BNR), and switch between HP(High Performance) and LP(Low Power) mode.
- Not sending sensitive headers for unknown site.
- Add a new API
Phone.setAdvancedSetting(new ShareMaxCaptureFPS(Int))
to change the max capture fps when screen sharing. - Add a new API
Call.switchAudioOutput(AudioOutputMode audioOutputMode)
to switch the audio play output mode during a call.
- Fixed users required to activate H.264 multiple times.
- Fixed SpaceClient.listWithActiveCalls() cannot show spaces cross-cluster.
Released on 2020-09-28.
- Support for incoming call notifications for scheduled sapce call.
- Support for being notified of the end of a space call.
- Support to join password-protected meetings.
- Support receiving annotation from the Webex Teams Client.
- Add a new API
Call.setVideoLayout(VideoLayout)
to change the video layout during a call. - Add a new API
Call.setRemoteVideoRenderMode(VideoRenderMode)
to specify how the remote video adjusts its content to be render in a view. - Add a new API
Phone.setAdvancedSetting(new VideoMaxTxFPS(Int))
to change the max sending fps for video. - Add a new API
Phone.setAdvancedSetting(new VideoEnableCamera2(Boolean))
to enable(disable) android.hardware.camera2. - Add a new API
Phone.enableBackgroundStream(boolean)
to let control whether the app can continue video streaming when app in background. - Add a new API
SpaceClient.listWithActiveCalls
to get a list of spaces that have ongoing call. - Add a new API
Message.isAllMentioned
to check if the message mentioned everyone in space. - Add a new API
Message.getMentions
to get all people mentioned in the message. - Popup H.264 license warning by default when first call.
- Improved video and audio quality
- API enhancements to improve bandwidth control.
- Fixed crash when behind the proxy.
- Fixed receiving calls failing after declining a space call.
- Fixed self view is rotated 90° if the call is started in landscape mode.
- Fixed previous messages are not listed.
- Fixed volume up/down key cannot control call volume directly.
- Fixed user in EMEAR org cannot message and call the user in US org.
- Fixed could not get thumbnail of the WORD, POWERPOINT, EXCEL and PDF file in the message.
- Fixed undesired OnConnectEvent callback is received twice.
- Fixed local and remote views are stuck/frozen.
- Fixed black screen when enable hardware codec.
- Fixed NullPointerException when post messages.
- Fixed cannot list messages in space for some case.
- Fixed annotations not received by some users in a space call.
- Fixed hangup fail when the the app is switched between the foreground and the background.
- Fixed SSLHandshake on Android 7.
- Fixed video isn't going full screen.
Released on 2020-04-01.
- Support to send/receive the threaded messaging.
- Support compose and render the active speaker video with other attendee video and all the names in one single view.
- Support single, filmstrip and grid layouts for the composed video view.
- Improve dependencies tree.
- Fixed no video if set screenShare view to null.
- Fixed crashes when posting file in which name starts with "#" sign.
- Fixed lock the audio playback when play through bluetooth headset.
Released on 2020-01-15.
- Support to join the meeting where lobby is enabled.
- Support to let-in waiting people from lobby to the meeting.
- Fixed users' audio cannot be heard mute/unmute.
- Fixed remote video black screen in PiP mode.
Released on 2019-09-30.
- Add API to receive membership created/deleted/updated/seen events.
- Add API to receive room created/updated events.
- Add API to get a space's last activity status.
- Add API to get a list of all space's last activity status.
- Add API to get a list of memberships's read status in a space.
- Add API to get space meeting details.
- Add API to send read receipts for message.
- Add API to get the token expiration date for JWTAuthenticator.
- Update to Dagger 2 dependency.
- Reduce latency when list messages.
- Fixed message list result include the message as "before" query parameter.
- Fixed audio in meeting being faint or nonexistant.
- Fixed already calling error when same cases.
- Removed notification when download file.
Released on 2019-07-24.
- Support 64bits.
- Support Google hardware media codec for video.
- Add API to list person by person IDs and Org ID.
- Add API to get the person's last activity.
- Add API to get the person's presence status.
- Fixed call disconnected after waiting in lobby.
Released on 2019-06-09.
- Fixed download remote file issue.
- Fixed sending file issue.
- Fixed event returned after posting a file.
- Improve APIs of message.
- Improve API docs.
Released on 2018-10-31.
- SDK rebranding.
- Support multi stream in space call.
- Add active speaker related API and event.
- Upgrade to latest media engine.
- Rename room to space.
- Update PersonId in CallMemberShip to be the same as participant's id.
- Fixed sending message error if login with different user account.
Released on 2018-08-23.
- Support screen sharing for both sending and receiving.
- A new API to refresh token for authentication.
- Two properties in Membership: personDisplayName, personOrgId.
- Support real time message receiving.
- Support message end to end encription.
- A few new APIs to do message/file end to end encryption, Mention in message, upload and download encrypted files.
- Five properties in Person: nickName, firstName, lastName, orgId, type.
- Three functions to create/update/delete a person for organization's administrator.
- Support room list ordered by either room ID, lastactivity time or creation time.
- A new property in TeamMembership: personOrgId.
- Two new parameters to update webhook : status and secret.
- Fixed sometimes cannot receive callback when hangup a call.
- Fixed video call has bad video quality with Vuzix M300 smart glasses.
- Fixed the order of redirectUri and scope are reversed in OAuthWebViewAuthenticator.
Released on 2018-01-12.
- Receive and display content-sharing stream
- Support room calling/multi-party calling
- Support Single-Sign-On authentication
- Set the maximum bandwidth for Audio/Video/Content Sharing
- Fixed always receiving incoming room call even if there is nobody in the meeting room
- Fixed unstable call state caused by race condition in call control events
- Fixed random crash when logout
- Updated the license by adding a term for H264 codec, and adding a new license file for "Cisco API" used in the project.
The following exclude is no longer needed in the packagingOptions (unless RxJava2 or its related library is involved in developers's app):
packagingOptions {
exclude 'META-INF/rxjava.properties'
}
Released on 2017-11-30.
- Initial release of Cisco Spark SDK for Android.