Changelog
1.28.6
- Added
creationTimestamp
inDownloadStatus
which represents the start time of a download. - Changed the implementation of
PlayerView
used 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 :
VdoInitParams
class 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)
, andshowClipping
parameters to define the segment. - Cross-Source Streaming : Also
VdoInitParams
class 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 exposeonTimelineChanged
to 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.
VdoPlaybackMode
options 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
VdoPlaybackMode
andmaxBufferMs
on application start for consistent playback and download settings. - VdoMediaMetadata: Added a new field in
VdoInitParams
to 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
5135
for 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
SecurityException
with media downloads whentargetSdkVersion
is 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
DownloadStatus
object 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 -
NoSuchMethodError
forWindowInsets.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
windowLayoutInDisplayCutoutMode
with 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
enterFullScreen
andexitFullScreen
to enter or exit fullscreen inVdoPlayerUIFragment
. - Added
FullScreenActionListener
to monitor when video enters or exits fullscreen. The listener can be set using the methodsetFullscreenActionListener
ofVdoPlayerUIFragment
.
- Added API to expose
playerOption
. - Added support for handling fullscreen for custom back press implementation
- The import path for
VdoParamsGenerator
has 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.duration
withDownloadStatus
.
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
VdoDlService
memory leak.
1.15.1
- Code optimisation and refactoring
1.15.0
-
Bug fixes related to HLS playback
-
First call to
onBackPressed()
is handled byVdoPlayerUIFragment
to manage player orientation and state then subsequent calls are passed to attached activity. -
Option to disable initital handling of
onBackPressed()
inVdoPlayerUIFragment
by 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
VdoPlayerUIFragment
with 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
Track
classequals()
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
-->PlayerHost
VdoPlayer.InitializationListener
-->PlayerHost.InitializationListener
VdoPlayer.PlayerHostNotReadyException
-->PlayerHost.PlayerHostNotReadyException
VdoPlayer.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.