Changelog
1.29.2
- Updated internal dependencies to resolve conflicts with 
firebase-firestore. 
1.29.1
- Added support for 16KB page sizes for device compatibility.
 - Security updates.
 - Updated to latest media3 version 1.8.0.
 - SDK now support Android version from minSdkVersion 24 to targetSdkVersion 36.
 - Fixed caption search result issue.
 - Bug fixes and performance improvements.
 
Note: Ensure that the build configuration for the project is updated to Android Gradle Plugin (AGP) version 8.9.1 or above, and Gradle version 8.13 or above.
1.28.13
- Enhanced clipping UI.
 - Made clear save offline setting configurable using custom player.
 - Exception Handling.
 - Bugfix - Fixed chromecast button visible even when chromecast is false in custom player.
 
1.28.10
- The caption style now adapts to the user's selected caption preferences in the Accessibility settings.
 - Added support for changing the color of the clipping marker 
VdoInitParam.Builder().setClips(startTime, endTime, false, markerColor). - Changed the default quality label to KBPS and MB.
 
1.28.9
- Changed media track quality labels with inbuilt UI.
 
1.28.8
- Security updates.
 
1.28.7
- Security updates.
 
1.28.6
- Added 
creationTimestampinDownloadStatuswhich represents the start time of a download. - Changed the implementation of 
PlayerViewused in scrubbing preview to resolve media3 vs exoplayer2 version issues. - Bugfix -
- Fixed subtitles not displaying during audio-only playback.
 - Fixed the loading icon remaining visible when returning from the home screen.
 
 
Error 5154, related to a key request failure during video playback with SDK version 1.28.4, has been fixed.
1.28.4
- 
New Features -
- Video Clipping : 
VdoInitParamsclass includes the newsetClips()method, allowing playback of a specific video segment. This feature is ideal for previews, demonstrations, or highlighting content, usingstartTime(in ms),endTime(in ms), andshowClippingparameters to define the segment. - Cross-Source Streaming : Also 
VdoInitParamsclass able to supports playing cross-source video URLs in addition to VdoCipher-based videos. The newconfigureMediaSource()method enables playback of external DRM videos, non-DRM videos, local media files, and live streaming URLs. 
 - Video Clipping : 
 - 
Build & Version Changes
- Updated media3 version to 1.4.1 from 1.4.0.
 
 - 
Breaking Changes -
- Added a new callback in 
VdoPlayer.PlaybackEventListener()to exposeonTimelineChangedto users. This requires code changes for those usingVdoPlayer.PlaybackEventListener(). 
 - Added a new callback in 
 - 
Bug Fixes
- Improved handling of 61xx errors during playback
 - Enhanced handling of consecutive seeks for smoother playback
 - Backup rules can now be added by the user
 - Fixed bug related to null audio focus
 - BottomSheetDialog is set to be narrower and centered in landscape mode.
 
 
Note: Ensure that the build configuration for the project is updated to Android Gradle Plugin (AGP) version 8.2.2 or above, and Gradle version 8.4 or above.
1.27.1
- 
New Features -
- Scrubbing Preview: Introduced a new feature that allows users to preview video content while scrubbing through it. This feature provides a visual preview of different sections of the video, enhancing navigation and user experience.
 - Multi-language Support: Added support for multiple languages, including player text elements and error messages.
 - Background Playback: Improved user experience with seamless media playback across app navigation and multitasking scenarios. 
VdoPlaybackModeoptions include:- DEFAULT: Stops playback when the player screen is closed.
 - CONTINUE_PLAYBACK_ON_BACK_PRESS: Continues playback when the app is minimized, stops when fully closed.
 - CONTINUE_PLAYBACK_ON_APP_EXIT: Keeps playback running even after the app is closed.
 
 
 - 
Build Changes
- Update SDK to AGP to 8.2.2, Gradle to 8.4
 
 - 
API Changes -
- VdoPlayerSetting.Builder(): Introduced a new API to globally set 
VdoPlaybackModeandmaxBufferMson application start for consistent playback and download settings. - VdoMediaMetadata: Added a new field in 
VdoInitParamsto allow setting the media title, description, and poster. 
 - VdoPlayerSetting.Builder(): Introduced a new API to globally set 
 - 
Breaking Changes -
- Added a new callback in 
VdoPlayer.PlaybackEventListener()to expose player options to users once prepared. This requires code changes for those usingVdoPlayer.PlaybackEventListener(). - Introduced a new callback in 
PlayerHost.InitializationListener()to handle player view disconnection events when background playback starts. - The 
setBufferingGoalMs()method has been removed fromVdoInitParams.Builder(). You can now set this using thesetMaxBufferMs()method inVdoPlayerSetting.Builder(). 
 - Added a new callback in 
 
1.26.9
- Bugfixes -
- Handling action bar with VdoPlayerUIFragment.
 - Added a fix for 1250 during offline playback.
 
 
1.26.8
- Upgraded media3 version to 1.3.1.
 - Added a new error code 
5135for invalid video parameters. - Removed unsupported tracks from Downloads.
 - Bugfixes -
- Resolved NullPointerExceptions.
 
 
1.26.7
- Bugfixes -
- Resolved NullPointerException on background threads.
 - Potential reduction of 6122 errors.
 
 
1.26.6
- Security updates.
 
1.26.5
- Updated the implementation of FOREGROUND_SERVICE_DATA_SYNC, requiring permission to be provided on the app side.
 - Bugfixes -
- Fixed a crash occurring when a translucent primaryColor was set for the app theme.
 - Fixed the caption search button visibility issue.
 - Resolved the cast context leak.
 
 
Note: Ensure android.permission.FOREGROUND_SERVICE_DATA_SYNC is declared in the manifest for download to work when target SDK version is set as 34 and higher.
1.26.4
- Added Throwable for methods that can throw exceptions.
 - Bugfixes -
- Fixed RemoteServiceException coming while downloading videos.
 - Fixed few NullPointer exceptions.
 
 
1.26.3
- Upgraded Play Integrity request from Classic to Standard.
 - Bug fixes:
- Fixed 
SecurityExceptionwith media downloads whentargetSdkVersionis set to 34. 
 - Fixed 
 
1.26.1
- Exception handling when player not ready.
 - Bugfixes -
- Fixed NullPointerExceptions related to data initialization and background process.
 - Added offline data synchronization.
 
 
1.26.0
- Added support for token(alternative of otp).
 - Updated minSdkVersion to 21 and compileSdk to 34.
 - Bugfixes -
- Fixed caption search visible at multiple places issue.
 - Fixed a NullPointerException and an ANR related to MediaDRM.
 
 
1.25.1
- Added an API, DownloadStatus.isExpired(Context), to check if downloaded media has expired.
 - Displaying error code 6187 when attempting to play an expired downloaded file.
 - Bugfixes -
- Fixed a NullPointerException related to onDrmSessionAcquired.
 - Addressed an "Application Not Responding" (ANR) error.
 - Resolved a crash in the Bottom Sheet: occurred when pressing the home button while the Bottom Sheet was open.
 
 
1.24.1
- Bugfixes -
- Fixed auto resume not working properly for offline downloads.
 - Fixed waiting text coming on player after video load.
 - Fixed additional status bar space coming in Flutter.
 
 
1.24.0
- Removed support for safetynet. Use Play integrity instead.
 - Upgraded minSdkVersion to 19.
 - Bugfixes -
- Fixed download failing due to download being requested in the background.
 - Fixed NullPointerException related to onDrmSessionAcquired.
 - Exception Handling
 
 
1.23.5
- Added play integrity support for media download.
 
1.23.4
- Bugfix - Added PlatformSchedulerService for media3
 
1.23.3
- Adding cross platform resume.
 
1.23.2
- Bug fix - Conflict of media3 PlayerView with exoplayer.
 
1.23.1
- Bugfix - Fixed the Exoplayer version mismatch error (Error 1203) coming while loading a player in release apk.
 
1.23.0
- Updated 
DownloadStatusobject to include displayable title and description provided while downloading a video. - Added default player controls in case an error occurs while loading controls
 - Bug Fixes -
- Fixed an issue where the download query filter by status was not functioning correctly.
 - Resolved the problem of native controls not being displayed for certain videos.
 
 
1.22.5
- Error message upon transitioning from idle to playing state has been eliminated.
 
1.22.4
- Migrated to AndroidX Media3 from ExoPlayer.
 - Displaying video tracks according to device capabilities.
 
1.22.3
- Showing media title with download progress notification.
 - Bug fix - 
NoSuchMethodErrorforWindowInsets.getDisplayCutout(). 
1.22.2
- Bug fixes -
- Removed usage of non-sdk API onApplyWindowInsets.
 - Handling NullPointerException with DlServiceSpec.fromJSONString().
 
 
1.22.0
- Added option to get description from 
DownloadStatus. - Resolved the problem where the player UI control's transparent background was not visible.
 - Resolved the problem where the video was started from beginning after an error occurs.
 - Incorporated 5114 as retryable error code.
 
1.21.2
- Backport version with exoplayer dependency v2.19.1
 - Latest changes and fixes picked from version 1.22.5 excluding Media3.
 
1.21.1
- Instead of invoking pack-up, we now pause the player to avoid reloading of the player.
 - Bug fixes -
- Fixed download notification causing crash when started in background.
 - Fixed NullPointer exception when updating speed
 
 
1.21.0
- Added support for 
windowLayoutInDisplayCutoutModewith inbuilt player UI. - Improved feedback of double tap to skip forward and backward.
 - Implemented fullscreen behavior with video in portrait and landscape mode.
 - Fullscreen Changes for Player UI:
- Fixed auto rotate lock while going into fullscreen mode.
 - Implemented fullscreen behavior based on aspect ratio:
- Vertical videos will go fullscreen in portrait mode.
 - Horizontal videos will go fullscreen in landscape mode.
 - Added APIs 
enterFullScreenandexitFullScreento enter or exit fullscreen inVdoPlayerUIFragment. - Added 
FullScreenActionListenerto monitor when video enters or exits fullscreen. The listener can be set using the methodsetFullscreenActionListenerofVdoPlayerUIFragment. 
 
 - Added API to expose 
playerOption. - Added support for handling fullscreen for custom back press implementation
 - The import path for 
VdoParamsGeneratorhas been modified. 
Note: If the enterFullScreen or exitFullScreen method is called from onConfigurationChanged, the video goes into fullscreen but the orientation needs to be handled manually.
1.19.7
- Added support for play integrity.
 - Fixed concurrency issue with offline download.
 
1.19.6
- Added support to conserve player config across session.
 - Reduce watermark text size proportionately for a smaller screen.
 - Bug fixes -
- Releasing media session when player stops.
 - Showing "Tap to retry" only when error message is retry-able with the built-in player ui.
 - Going to PiP closes the bottom sheet and dialogs with the built-in player ui.
 
 
1.19.4
- Upgraded exoplayer dependency to 2.18.5
 - Added view overlay for fullscreen and picture in picture.
 - Bug fixes
 
1.19.2
- Bug fix - Incorrect 
MediaInfo.durationwithDownloadStatus. 
1.19.1
- Changed exoplayer data source configurations.
 
1.19.0
- VdoPlayerUIFragment now has an option to disable default controls.
 - Pinch to zoom is now supported with VdoPlayerUIFragment default controls.
 - The player resize mode can now be modified.
 - Added support for downloading media without audio.
 - Upgraded exoplayer dependency to 2.18.2
 - Bug fixes.
 
1.18.2
- Minor Improvements
 
1.18.1
- Added support for Chromecast.
 
1.17.0
- Added support for picture in picture mode.
 - Added callback for persistent OTP with save offline.
 - Updated CompileSdkVersion from API level 31 to 33.
 - Updated TargetSdkVersion from API level 30 to 32.
 - Vdocipher cast module moved into core module. Cast module dependency no longer needs to be specified separately.
 - Removed jcenter due to deprecation.
 - Fixed memory leaks.
 
1.16.0
- 
Fixed audio issues with offline playback.
 - 
Changed signature of
OptionsDownloader. Context is now required for the instantiation ofOptionDownloader.OptionsDownloader optionsDownloader = new OptionsDownloader(context); //Pass context here. - 
Fixed
VdoDlServicememory leak. 
1.15.1
- Code optimisation and refactoring
 
1.15.0
- 
Bug fixes related to HLS playback
 - 
First call to
onBackPressed()is handled byVdoPlayerUIFragmentto manage player orientation and state then subsequent calls are passed to attached activity. - 
Option to disable initital handling of
onBackPressed()inVdoPlayerUIFragmentby settingapp:handleBackPress="false". This can be used to handle all back press action in activity.<fragment
android:name="com.vdocipher.aegis.ui.view.VdoPlayerUIFragment"
....
app:handleBackPress="false" //by default it's true
/> 
1.14.2
- Added support for TV applications in 
VdoPlayerUIFragment 
1.14.1
- Fixed issue with caption selection
 - Increased gesture area for double tap in 
VdoPlayerUIFragment - Added migrations for database changes across SDK
 
1.14.0
- Player UI enhancements
 - Fixed issue with clear storage option in 
VdoPlayerUIFragment 
1.13.1
- Player UI enhancements
 - Multiple download issue fixed
 - Upgraded exoplayer dependency to 2.18.1
 - Bug fixes
 
1.13.0
- New 
VdoPlayerUIFragmentwith built-in player controls- Option to enable or disable player controls
 - Media can be saved and streamed locally
 
 - Bug fixes
 
1.12.1
- Adaptive playback bug fix
 
1.12.0
- Upgraded exoplayer dependency to 2.18.0
 - Added caption support for offline playback
 - Added option in VdoInitParams to resume video from last playback position
 - Added callback to provide an event to resume from saved seek position
 - Bug fixes
 
1.11.0
- Upgraded exoplayer dependency to 2.17.1
 - Implemented offline downloads using exoplayer
- Added feature to download content in external storage
 - Use 
VdoDownloadManager.getInstance(@NonNull Context context, @Nullable String downloadLocation)withDownloadRequest.Builder(@NonNull DownloadSelections selections)andvdoDownloadManager.enqueueV2(@NonNull DownloadRequest downloadRequest)to use new download implementation 
 - Provided option for customising download notification helper
 - Added feature to search using selected caption
 - Added feature to set default caption
 - Enhanced watermark feature
 - Bug Fixes
 
Note - - If video download is paused and download location is changed, the half downloaded content needs to be removed manually from device storage and download should be restarted. - In case of re-downloading a video, existing file is removed and downloaded again with new selected tracks
1.10.1
- Fix 
Trackclassequals()andhashCode() - Bug fixes
 
1.10.0
- Update minSdkVersion to 18. Apps depending on this version will need to set a minSdkVersion of 18 or above
 - Fix PlaybackEventListener#onBufferUpdate callback not being called
 - Move VdoInitParams, PlayerHost and related classes to top level classes
 - Class name changes are:
VdoPlayer.PlayerHost-->PlayerHostVdoPlayer.InitializationListener-->PlayerHost.InitializationListenerVdoPlayer.PlayerHostNotReadyException-->PlayerHost.PlayerHostNotReadyExceptionVdoPlayer.VdoInitParams-->VdoInitParams
 
1.9.0
- Upgrade exoplayer dependency to 2.14.2
 - Restore track selections on player restore
 - Bug fixes
 
1.8.1
- Option to block devices with ABD debugging on
 - Bug fixes
 
1.7.3
- Upgrade exoplayer dependency to 2.12.3
 - Regular security and bug fix updates
 
1.7.2
- Upgrade exoplayer dependency to 2.11.8
 - Add api to get device's analytics ID on vdocipher logs for error handling
 - Bug fixes.
 
1.7.1
- Add option in VdoInitParams to turn off playback analytics collection.
 - Disable auto backup of downloaded offline video index.
 - Add error code for the case when a requested offline video is not found on the device.
 - Bug fixes.
 
1.6.0
- SafetyNet Implementation for security enhancements
 
1.5.0
- Offline Download Video Watermark addition
 
1.4.0
- Bug fixes
 - Added Cast plugin dependencies
 
1.3.1
- Further classify generic errors so they are easier to debug.
 - Bug fixes
 
1.2.0
- Implemented Watermark Skip Behaviour
 - Bug fixes
 
1.1.0
- Some generic error codes have been replaced with more informative specific ones.
 - Bug fixes.
 
1.0.1
- New sdk available for Google Cast support; integration instructions and demo provided in sample app on github
 - Added support to specify resume time and autoplay behavior in VdoInitParams
 - Added support-library based player fragment
 - Improved offline playback compatibility
 - Bug fixes.
 
1.0.0-beta5
- Fixed delayed query results for offline downloads.
 - Fixed unreliable deletion for offline downloads.
 - Updated to new gradle dependency configurations.
 - Bug fixes.
 
1.0.0-beta4
- Added api to specify start and end time for playback in VdoInitParams.
 - Additional error information, when applicable, is available in DownloadStatus#reasonDescription, which can be parsed as a json to obtain details.
 - Bug fixes.
 
1.0.0-beta1
- Added api to easily set and query adaptive mode.
 - Finer permission denial error codes and messages.
 - Bug fixes.