Release Notes (Android v3)

The web player release notes highlight the additions and improvements JWP has made to the Android SDK v3 code. If you have any questions after reading a release note and linked documentation, please contact your JWP representative.


💡

To receive immediate notifications for all Player releases, add the following RSS feed URL to your RSS reader:

https://docs.jwplayer.com/players/changelog.rss


3.20

Version Date Description
3.20.2 4 May 2022
• Removed a usage of PackageManager.getInstalledPackages() which was being used to verify Cast API availability.
• Fixed a crash that would occur when using TextureView.
• Fixed an issue with WideVine DRM playback
3.20.1 14 Dec 2021
• General FreeWheel improvements.
3.20.0 20 Oct 2021
• Updated Web Player version to 8.21.2.
• Updated ExoPlayer version to 2.14.2.
• Updated IMA SDK version to 3.24.0.
• Fixed an issue where the settings gear button did not show up properly while casting.
• Fixed an issue where InPlaylistTimeMetaData start/end values did not match iOS and the web.
• Fixed an issue where IMA DAI custom ad tags were not being sent correctly.

3.19

Version Date Description
3.19.6 2 Sep 2021
• Improved memory management.
• Fixed an issue where IMA response does not fire ads callbacks and causes the player to stop.
• Fixed a bug where user interface does not behave seamlessly when selecting side-loaded caption options.
• Fixed a bug where preroll ads play from background when app sent to background during ads buffering.
3.19.6 2 Sep 2021
• Fixed an issue where autoplay doesn’t behave as expected when IMA prerolls error out.
• Fixed an issue where video player does not set up properly on Android 4.4, 5.0, 6.0.
3.19.4 3 Jun 2021
• Fixed an issue where autoplay doesn’t behave as expected when IMA prerolls error out.
• Fixed an issue where video player does not set up properly on Android 4.4, 5.0, 6.0.
3.19.3 8 Apr 2021
• Fixed an issue where player crashes in rotating orientation when JWPlayerView passes in a non-activity Context in the constructor.
3.19.2 26 Feb 2021
• Fixed an issue where casting live video takes to start while casting.
• Fixed an issue where pre-roll ad plays from the background when the app is backgrounded during ad buffering.
• Fixed a bug where the foregrounded ad is being skipped with irregular behavior when the backgrounded ad brought back.
3.19.1 17 Dec 2020
• Fixed a FreeWheel issue causing the app to crash after "adId":39689202 mid-roll ads being played.
3.19.0 1 Dec 2020 Updates
• Added adTagParameters support to DAI configuration.
• Updated IMA SDK to 3.19.3 to avoid crashes with GDPR consent libraries.


Fixes
• Fixed an issue causing Snapback plays more than the latest skipped ads.
• Fixed an issue causing the player to call pause() unexpectedly when the app is backgrounded while casting.
• Fixed a bug causing the player seeking to bring the position to the beginning of the content.
• Fixed an issue causing audio only livestream does not start playing automatically.

3.18

Version Date Description
3.18.2 21 Oct 2020
• Fixed a bug causing the App to crash when casting is initiated.
• Fixed an issue in player.isControlBarVisible where onControlBarVisibilityChanged notification doesn't work as expected when player is being paused.
3.18.0 7 Oct 2020 Updates
• Upgraded the Android SDK to use Chromecast SDK 19.0.0.


Fixes
• Fixed an issue in Chromecast where playlist restarts from first item when disconnected.
• Fixed a bug causing the seek control to freeze when casted.
• Fixed a bug causing the player to fire callback when video being played in background.

3.17

Version Date Description
3.17.1 11 Sep 2020
• Fixed a bug preventing the “Next Up” button from being displayed.
• Fixed an issue in the Google IMA ad client where the ad was not properly destroyed and no content was displayed.
3.17.0 1 Sep 2020
• Updated the FreeWheel SDK, which included a GDPR compliance update.
• Fixed an issue in FreeWheel where the ad ID value always returned null.

3.16

Version Date Description
3.16.0 19 Aug 2020
• Updated the Google IMA to support version 3.18.1.

3.15

Version Date Description
3.15.1 30 Jul 2020
• Fixed an issue where setting up a player with controls set to false and then calling load() resets the controls to true.
• Fixed a bug causing the InPlaylistTimedMetadataEvent to not fire as expected.
• Fixed an issue where calling onPause() before the IMA SDK setup is complete, crashes the app with a NullPointerException.
3.15.0 25 Jun 2020
• Added support for triggering the on('meta') and on('metadataCueParsed') methods based on in-band emsg timed metadata.
• Updated to version 8.15.1 of the web player core.
• Added a configuration option, playlistIndex, which enables a playlist to be loaded and start playback from any item within it, not just the first. The default of this option is a 0 index.
• Removed trace references to advertising ID to comply with Google's new policies around children's app submissions. We recommend apps remove the additional dependency on the jwplayer-ima component/module as well.
• Fixed a rare case where using a specific USB-C-to-HDMI adapter causes apps with JWP to crash.

3.14

Version Date Description
3.14.0 8 Jun 2020 Updates
• Added API to enable developers to modify a playlist item, prevent it from loading and transition instead to the following item, modify the ad block, and disable ads.
• Service improvements to increase stability.


Fixes
• Fixed an issue where the mute API did not affect Freewheel ads.

3.13

Version Date Description
3.13.1 19 May 2020 Updates
• Added support for the VAST ad client's new adWarning event which fires when a non-fatal ad error occurs that does not prevent fill.
• Created warning 70001 for VAST error code 1002, which occurs when a VMAP does not contain tracking events for the ad break. More information can be found in the ad warning documentation.


Fixes
• Fixed an issue where the player fails to resume DRM playback after backgrounding the app.
• Fixed a bug causing the setting controls to be ignored if defined in the setup configuration.
• Fixed a bug where Google IMA ads could not be muted.
• Fixed an issue causing the player to pause after seeking from the play state instead of resuming playback.
• Fixed an issue causing the onFirstFrameListener() to fire before the onPlayListener() event.
• Fixed a bug where if the viewer pauses playback during a Google IMA or Freewheel ad and rotates the orientation of the video, the screen becomes black instead of remaining on the current ad frame.
3.13.0 7 May 2020 Updates
• Breaking Change: As of version 3.13.0 the Android SDK now uses AndroidX (Jetpack) libraries.
• Please refer to the official Migrating to AndroidX guide to learn more about how you can migrate your application code.
• Added support for PlaylistItem.startTime property that allows developers to define the number of seconds from the start of a media asset when playback should begin.
• Added a PlaylistItem.externalMetadata field that allows developers to add external metadata which will be surface at a specified time in the video and delivers optional custom user data.
• Added the ability to use VTT files to load preview thumbnails for individual shots or scenes in a video. This allows thumbnails to display as a tooltip when the user is seeking forward or backward in the player's progress bar.
• Removed all code enabling Android Advertising ID transmission from Android SDK.
• Upgraded Android SDK to use JWP 8.13.1.


Fixes
• Fixed an issue where 608 captions would not automatically appear on the receiver when captions were enabled on the sender before the casting session was started. The user would need to turn them off and on again during the casting session.
• Fixed an issue where onPlay does not fire consistently at the start of Google DAI streams.

3.12

Version Date Description
3.12.1 10 Apr 2020 Fixes
• Fixed an issue where calling removeButton() did not remove the button from the player
• Fixed an issue where after ad playback the audio of the content plays before the video
• Fixed an issue where the onPlay event doesn’t fire after skipping a FreeWheel mid-roll ad
• Fixed an issue where the labels in the captions menu did not match the caption languages when casting.
• Fixed an issue where post-roll snapback does not occur when using the seek API to seek past the end of a stream that is configured with Google IMA DAI
• Fixed an issue where the player displays the wrong position in the UI when using the API to seek beyond the content duration in streams configured with Google IMA DAI
• Fixed an issue where the player control bar is visible before a Google IMA, Google IMA DAI, or FreeWheel pre-roll ad starts playing
3.12.0 16 Mar 2020 Updates
• Added support for Google IMA DAI. See our Android SDK developer documentation for more details.
• Unbundled the FreeWheel SDK from the JWP Android SDK aar


3.11

Version Date Description
3.11.0 14 Feb 2020 Updates
• Upgrade FreeWheel ad support to version 6.32.0
• Added support for playlist-level configuration of FreeWheel where the freewheelSettings can now be nested within an individual PlaylistItem. Use case descriptions and a code sample can be found here
• Added post-roll ad support in the FreeWheel ad client
• Added a new callback for In-Playlist Timed Metadata, which supports DATERANGE and PROGRAM-DATE-TIME tags. The DATERANGE and PROGRAM-DATE-TIME metadata events fire when playback enters the section of an HLS stream tagged with #EXT-X-DATERANGE or #EXT-X-PROGRAM-DATE-TIME.


Fixes
• Fixed an issue where onVisualQuality is not called when a stream automatically changes bitrate

3.10

Version Date Description
3.10.0 20 Dec 2019 Updates
• Added addButton() and removeButton() API methods allowing developers the ability to add or remove player buttons to the player control bar. When new buttons are added via the addButton() API method, they can call back to developers' custom native code.
• Upgraded Android SDK to use JWP 8.11.8
• Updated order of play events.
• Exposed creativeAdId and creativeID in the AdImpressionEvent payload for Google IMA ads.


Fixes
• Fixed issues with misaligned vertical and horizontal webVTT captions that use cue positioning
• Fixed an issue where duplicate captions appear for playlist items that contain both side-loaded and in-stream 608 captions
• Fixed issue where streams with IcyInfo metadata cause player crash

3.9

Version Date Description
3.9.0 15 Nov 2020 Updates
• Upgraded ExoPlayer dependency to version 2.10.6
• Exposed Freewheel adBreakStart, adBreakEnd, and adViewableImpression events


Fixes
• Fixed issue where calling pauseAd() when using Google IMA did not pause ads
• Fixed issue where creating a new player during playback crashes the app

3.8

Version Date Description
3.8.0 16 Oct 2019 Updates
• Upgraded to Google IMA Android version 3.11.3
• Added JWFriendlyAdObstructions API class to replace the now deprecated JWExperimentalAPI class that enables the registration of video controls that overlay the media element. Typically, these video controls are considered obstructions and reduce the viewability rate calculated by the Open Measurement SDK. More information on how to use the JWFriendlyAdObstructions API can be found here
• Expose the adId parameter in the AdImpressionEvent for Google IMA Improved the user experience by retaining the paused state after a viewer seeks while paused. Developers who have worked around this in the past by calling pause() on seek no longer need to use the API, but anyone who wishes to resume playback automatically after a seek event now must call play()


Fix
• Fixed an issue where changing quality levels would pause playback in fullscreen if using multiple MediaSources as pseudo quality levels.

3.7

Version Date Description
3.7.0 16 Aug 2019 Updates
• Exposed nextupOffsetPercentage property which allows the next up overlay to be displayed at a specified percent of the way through the video, rather than at a fixed number of seconds from the beginning or end of the video. When the nextupOffsetPercentage is set, it overrides nextupOffset

3.6

Version Date Description
3.6.0 20 Jun 2019 Updates
• Improved Android fullscreen handling for RecyclerView and non-RecyclerView configurations. The JWPlayerView will detect whether or not it is running a RecyclerView and will use the appropriate handler allowing for a seamless fullscreen user experience.
• Upgraded SDK to use JWP 8.8.6


Known Issue
• Freewheel ads may restart when user enters or leaves fullscreen mode during playback. This does not cause multiple Freewheel ad impression pings to be sent and will not affect ad reporting.

3.5

Version Date Description
3.5.2 21 May 2019 Fixes
• Fixed an issue where developer is unable to disable fullscreen on rotation when using JWSupportFragment.
• Fixed an issue where SharingPluginEvents are not available for use.
3.5.1 29 Apr 2019 Updates
• Added a new "Experimental API" class that enables the registration of video controls that overlay the media element. Typically, these video controls are considered obstructions and reduce the viewability rate calculated by the Open Measurement SDK. Learn more about Google
• IMA’s Open Measurement SDK integration and how to register video controls overlay obstructions here.
• Improved JWP expired license user experience by adding an error message notification and halting player setup or playback
• Added onWarning callback for non-fatal error debugging or troubleshooting purposes.


Fixes
• Fixed issue where video content restarts from the beginning after ad playback if two midrolls are scheduled for the same time position.
• Fixed issue where video is shortly displayed before IMA VMAP preroll in playlist.
• Fixed issue where Google IMA ads play with sound when the advertising player configuration is set to mute.
• Fixed issue where the app crashes if related items file is not found.
• Fixed issue where players with Chromecast buttons using Fragments lose connection to a casting session.
• Fixed issue where the title and image are not available for playlists with related videos during a casting session.
• Fixed issue where the parent video is casted when the user selects a related video.
• Fixed issue where audio plays on the sender app when the casting session starts and a VAST or Freewheel ad is already in progress.


Known Issue
• Intermittently Freewheel pre-roll VPAID ads continue to load after ad completion and prevent video playback to start. This issue will be fixed in the next Android release.


3.5.0 14 Mar 2019 Updates
• Upgraded SDK to use JWP 8.7.3
• Upgraded to Google IMA version 3.10.6 which includes IAB’s Open Measurement SDK that enables third-party viewability and verification measurement for ads served to mobile and desktop environments.
• Migrated the Chromecast implementation to the latest Google Cast library (version 16.1.2). Please refer to the Chromecast documentation for implementation details.


Fixes
• Fixed an issue where some VPAID ads continue playing in background after having been skipped
• Fixed an issue where spinner shows during content playback after VPAID ad
• Fixed issue where player controls do not automatically hide during video playback if user clicks the pause button and then the play button after the completion of a VPAID ad
• Fixed an issue where onAdComplete event does not fire for FreeWheel VPAID ads
• Fixed an issue where onPause event does not fire on Android 5.1 if playback is interrupted by external actions such as phone call
• Fixed an issue where a playlist with IMA VMAP would not switch to next items automatically
• Fixed issue that prevents localized error messages
• Fixed an issue where onAdRequest does not fire for the first ad instance starting from the second ad pod or when inline IMA VMAP ads are used
• Fixed an issue where ad instances within one ad pod are missing controls when configured using IMA VMAP
• Fixed an issue where only one onAdRequest fires for an IMA VMAP ad pod with multiple instances
• Fixed an issue where the replay button shows before IMA VMAP post-roll
• Fixed an issue where FreeWheel ad with relative offset plays as a pre-roll for the second playlist item or after video replay
• Fixed an issue where AdRequestEvent does not have an offset parameter when ad is manually requested during video playback
• Fixed an issue where callbacks fire only for the first ad instance in an ad pod


3.4

Version Date Description
3.4.2 22 Jan 2019 Fixes
• Added support for Developer license
3.4.1 8 Jan 2019 Fixes
• Added a new "Experimental API" class that enables the registration of video controls that overlay the media element. Typically, these video controls are considered obstructions and reduce the viewability rate calculated by the Open Measurement SDK. Learn more about Google
• IMA’s Open Measurement SDK integration and how to register video controls overlay obstructions here.
• Improved JWP expired license user experience by adding an error message notification and halting player setup or playback
• Added onWarning callback for non-fatal error debugging or troubleshooting purposes.


Fixes
• Fixed an issue where the player would not enter fullscreen mode, if a device has Chrome 71+


Known Issue
• Intermittently Freewheel pre-roll VPAID ads continue to load after ad completion and prevent video playback to start. This issue will be fixed in the next Android release.


3.4.0 3 Jan 2019 Features
• Upgraded SDK to use JWP 8.6.3
• Changed base protocol to https:// to improve security of the SDK. Please ensure that your content and ads are delivered through HTTPS.
• Seeked position was added to onSeeked() event, so that the actual position can be retrieved
• Upgraded IMA dependency to 3.9.4


Enhancements
• The SDK now can be used with multi-window mode. Check this page out for more details


Fixes
• Fixed an issue where IMA pre-roll is delayed on the second playlist item
• Fixed an issue where some VPAID ads show a white screen instead of ad content
• Fixed an issue where casting is unstable in some cases
• Fixed an issue where the player autostarts when onPause() lifecycle event is called
• Fixed an issue where the player shows the first frame of a content before IMA VMAP pre-roll.
• Fixed an issue where forced switching playlist items with VAST mid-rolls causes playlist items to be missed
• Fixed an issue where the app crashes with casting is stopped
• Fixed an issue where wrong captions are shown during casting
• Fixed an issue where the player buffers infinitely if a non-buffered MP4 stream with configured FreeWheel pre-roll starts playing
• Fixed an issue where player background is draggable as a result of a long press on it
• Fixed an issue where no controls are present to switch on/off 608 captions
• Fixed an issue where playback starts from the very beginning if seek action occurred for paused video with IMA preroll
• Fixed an issue where 'xx' in custom message for FreeWheel ad is not replaced with countdown
• Fixed an issue where the CC button appears on the first player setup when a stream has no captions defined
• Fixed an issue where VAST ad with built-in skip offset can be skipped before the end of countdown
• Fixed an issue where the player cannot detect when video has captions in the manifest
• Fixed an issue where the IMA ad request disrupts video playback
• Fixed an issue where IMA VMAP with bad tag (invalid video url) breaks playback
• Fixed an issue where the player would report a positive duration in case of DVR streams
• Fixed an issue where the player's UI shifts up in case of connectivity issue
• Fixed an issue where clicking through VAST ad before its full loading makes player work in background
• Fixed an issue where VAST VMAP has no mid-roll ad points on seek bar
• Fixed an issue where video with configured FreeWheel ad cannot be played for the second time.


3.3

Version Date Description
3.3.0 29 Nov 2018 Updates
• Added the ability to set custom parameters to FreeWheel and IMA ad configurations, so that publishers can target their campaigns better. Please refer to the FreeWheel and IMA sections for the examples of usage.
• Added the ability to customize Look-Ahead HLS buffer time. Please refer to this section for the example.
• Introduced a separate version of the SDK for Amazon tablets. The ExoPlayer is replaced with its Amazon fork. It can be accessed through Maven. Please refer to the Amazon section for more details.


Fixes
• Fixed an issue where the player fails to seek forward if seek performed during IMA ad request
• Fixed an issue where RelatedPluginEvents.OnRelatedCloseListener cannot be imported
• Fixed an issue where IMA preroll causes endless buffering if playback is started before an MP4 video started buffering.
• Fixed an issue where the player overlaps cue points for IMA mid-rolls with the relative offset for playlists
• Fixed an issue where Ad Duration displays 6## instead of actual data in case of VAST mid-roll
• Fixed an issue where the player crashes if its size is 0 and VPAID ad is loaded
• Fixed an issue where getDuration() and getPosition() return -.001 for live streams
• Fixed an issue where a pre-roll shows incorrect duration in case of using startOnSeek


3.2

Version Date Description
3.2.1 19 Sep 2018 Bug Fixes
• Fixed an issue where onErrorListener() does not invoke after the player stops and idles
3.2.0 7 Sep 2018 Updates
• Added pitch correction for variable rate playback
• Added a toggle that allows developers to place the player either on a SurfaceView or TextureView. For more details please refer to our developer guide


Enhancements
•Updated ExoPlayer to version 2.8.2


Fixes
• Fixed a potential vulnerability in the SSL Error Handler
• Fixed an issue where captions would not adjust position after the control bar was hidden
• Fixed an issue where IMA mid-roll ad pods would freeze playback after a clickthrough
• Fixed an issue where the player would end playback in 'idle' state instead of 'complete' state
• Fixed an issue where an 'Unknown' caption label would be shown in captions menu
• Fixed an issue where setMute(true) would not work
• Fixed an issue where the player would infer MediaType from the original URL in the case of a 302 redirect
• Fixed an HLS playback issue where STATE_READY wasn't called due to different instances of DefaultBandWidthMeter


3.1

Version Date Description
3.1.0 22 Jul 2018 Updates
• As another step towards parity between SDK and the web player we have added the ability set up custom playback rates for your media. Please refer to the sample in this documentation section.


Fixes
• Fixed some memory leaks
• Fixed an issue where finalize() wouldn't trigger when an IMA ad was skipped
• Fixed an issue where the fullscreen button was missing during FreeWheel ad playback
• Fixed an issue where playback controls would disappear for audio-only streams
• Fixed an issue where the HD menu button would appear even if the stream had one quality level
• Fixed an issue where configuration Livestream + Preroll would return null
• Fixed an issue where playback controls would appear for FreeWheel VPAID ads
• Fixed an issue where onAdTime() would be invoked continuously after an ad was skipped
• Fixed an issue where the "Learn More" button and Ad Message would be delayed six seconds into the ad
• Fixed an issue where live HLS stream would stop because of an error after some time
• Fixed an issue where seek controls were missing for DVR-enabled live streams
• Fixed an issue where ad breaks wouldn't be shown on the seek bar until the first one is played
• Fixed an issue where a clickthrough action would be auto-triggered on Android 4.x devices

3.0

Version Date Description
3.0.0 18 Jun 2018 Updates
• Support for new advertising rules, including timeBetweenAds, startOnSeek, frequency, and startOn. Please refer to our Ad Rules Reference for details on how to use them.