All notable changes to this project will be documented in this file.
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 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 - 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.