Brightcove Native SDK for Android Release Notes

Product(s)
Video Cloud
Brightcove Player
Role(s)
Device SDK Developer
Topic(s)
References
Type
Support Doc
SDK
Android

In this topic, you will find the latest information on changes and enhancements to the Brightcove Native SDK for Android.

Version 6.8.1

31 May 2019

ExoPlayer2 Changes:

  • ExoPlayer2 has been downgraded to version 2.9.3 due to an issue with HLS Multiple Audio Tracks in version 2.9.6.

Offline Playback Changes:

  • Add Playback Authentication Service (PAS) support.

  • The following methods are added to the com.brightcove.player.edge.AbstractOfflineCatalog:

    • findOfflineVideoById(String, @NonNull HttpRequestConfig): Video
    • findOfflineVideoById(String, @NonNull HttpRequestConfig, @NonNull OfflineCallback<Video>): void
    • requestPurchaseLicense(@NonNull Video, @NonNull EventListener, @NonNull HttpRequestConfig): void
    • requestRentalLicense(@NonNull Video, @NonNull Date, long, @NonNull EventListener, @NonNull HttpRequestConfig): void
  • The following method is removed from the com.brightcove.player.edge.AbstractOfflineCatalog

    • renewLicense(@NonNull Video, @NonNull EventListener): void
  • Fixes an issue loading poster images for downloaded videos. When available, a local image will be loaded.

FreeWheel Plugin Changes:

  • Adds support for live content with pre-roll client-side ads

SSAI Plugin Changes:

  • Fixes an issue where a content source could be loaded directly from the src attribute in the Playback API response, instead of from the contenturi attribute in the VMAP.

Previous releases

Version 6.8.0

1 May 2019

SDK Changes:

  • The Android Minimum SDK Version supported by the Brightcove Native SDK for Android is now 19.

  • The Brightcove Native SDK for Android is now Java 8 compliant. Please note that Android apps developed using this version of the Android SDK may require the following directive added to the build.gradle file to ensure bytecode compatibility:

    compileOptions{
    targetCompatibility JavaVersion.VERSION_1_8
    sourceCompatibility JavaVersion.VERSION_1_8
    }

ExoPlayer2 Changes:

  • ExoPlayer2 has been upgraded to version 2.9.6

  • Please note that this upgrade has the following API changes:

  • Breaking Change Removed:constructor TrackSelectorHelper(@NonNull ExoPlayer player, @NonNull MappingTrackSelector trackSelector)

    Use constructor TrackSelectorHelper(@NonNull ExoPlayer player, @NonNull DefaultTrackSelector trackSelector)

  • Breaking Change Removed: setTrackSelector(@NonNull MappingTrackSelector trackSelector)

    Use setTrackSelector(@NonNull DefaultTrackSelector trackSelector)

  • Removed getTrackSelector(): MappingTrackSelector

    Use getTrackSelector(): DefaultTrackSelector

FreeWheel Plugin Changes:

  • The FreeWheel plugin has been updated to support FreeWheel AdManager version 6.28.0.

  • Please note that FreeWheel now packages the AdManager library as an Android Archive (AAR).

IMA Plugin Changes:

  • The IMA Plugin has been updated to support Google IMA SDK version 3.11.2.

  • This version of the Google IMA SDK supports Open Measurement standards.

  • Please refer to the Brightcove Android SDK documentation for more information.

  • Fixed an issue where midroll ads called after long periods of content playback would not play.

SSAI Plugin Changes:

  • The SSAI Plugin now supports content delivery through the Brightcove Playback Authorization Service (PAS).

  • Please note that PAS works only with the SSAI Plugin. PAS with the deprecated OnceUx Plugin is not supported.

Version 6.7.0

5 Apr 2019

SSAI Plugin:

  • With this release, the Brightcove Native SDK for Android implements the SSAI Plugin. For more information on this new plugin, please visit the Brightcove Android SDK Overview in the Brightcove Support site.

OnceUx Plugin Changes:

  • With this release, the OnceUx Plugin is deprecated. Please use the new SSAI Plugin instead. For more information, please visit the Brightcove Android SDK Overview in the Brightcove Support site.

Version 6.6.0

29 Mar 2019

SDK Changes:

  • A new class, HttpRequestConfig has been added. This class supports the addition of request URL parameters and/or request headers that may be required by Brightcove services (e.g. the Brightcove Edge API, or the Brightcove Playback Authorization Service (PAS)). Please refer to Brightcove Support documentation for more information on usage of this class.

  • Along with the HttpRequestConfig class, the following methods are added to the com.brightcove.player.edge.Catalog class: findPlaylistByID(String, HttpRequestConfig, PlaylistListener): void findPlaylistByReferenceID(String, HttpRequestConfig, PlaylistListener): void findVideoByID(String, HttpRequestConfig, VideoListener): void findVideoByReferenceID(String, HttpRequestConfig, VideoListener): void

  • The following findPlaylist methods are deprecated in com.brightcove.player.edge.Catalog: findPlaylistByID(String, Map<String, String>, PlaylistListener): void findPlaylistByID(String, Map<String, String>, Map<String, String>, PlaylistListener): void findPlaylistByReferenceID(String, Map<String, String>, PlaylistListener): void findPlaylistByReferenceID(String, Map<String, String>, Map<String, String>, PlaylistListener): void

  • The following findVideo methods are deprecated in com.brightcove.player.edge.Catalog: findVideoByID(String videoID, Map<String, String>, VideoListener): void findVideoByID(String videoID, Map<String, String>, Map<String, String>, VideoListener): void findVideoByReferenceID(String, Map<String, String>, VideoListener): void findVideoByReferenceID(String, Map<String, String>, Map<String, String>, VideoListener): void

Brightcove Native SDK for Android support for the Brightcove Playback Authorization Service (PAS)

  • In the Limited Availability release of the Brightcove Playback Authorization Service (PAS), the following features are supported by the Brightcove Native SDK for Android:

    • Online streaming of DRM content with PAS

    • Online streaming of HLSe content with PAS

  • In the Limited Availability release of the Brightcove Playback Authorization Service (PAS), the following features are not currently supported by the Brightcove Native SDK for Android, and will be implemented in an upcoming release:

    • Server-side Ad Insertion with the OnceUx plugin with PAS

    • Offline Playback with PAS

    • Chromecast with PAS

  • Important Note About ExoPlayer 1:

    • ExoPlayer 1 is deprecated, and will be End Of Life by the end of Q3 2019, at which point it will no longer be available in the Brightcove Native SDK for Android.

Version 6.5.1

12 Feb 2019

OnceUx Plugin Changes:

  • Fixed an issue where the IFrameResource element was being incorrectly parsed from VMAP sources.

Version 6.5.0

6 Dec 2018

SDK Changes:

  • Removed unnecessary dependencies in the Brightcove Android SDK.

  • Added asynchronous versions of the following methods to the OfflineCatalog class: getVideoDownloadStatus findAllQueuedVideoDownload findAllVideoDownload findOfflineVideoByID downloadVideo cancelVideoDownload pauseVideoDownload resumeVideoDownload deleteVideo getMediaFormatTracksAvailable

  • Fixed an issue where the estimateSize method in the OfflineCatalog class was returning an unexpected value.

  • Fixed an issue where an offline video built using VideoParser.buildVideoFromJSON() would not play as expected.

OnceUx Plugin Changes:

  • Fixed an issue where duplicate caption menu items would appear.

Cast Plugin: Release note update: While the Cast plugin has no changes in this release, it is important to note these clarifications in the currently supported features of this plugin.

  • Android 9 - Testing has shown that the following permission is required to use Chromecast with Android 9, in particular when the app is backgrounded and brought back to the foreground, and in order to use notifications to control a casting session. This uses-permission tag should be added to an app's AndroidManifest.xml: <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>

  • Captions - Testing has shown that in-manifest captions only with Dynamic Delivery DASH display as expected.

  • Captions - In-manifest captions with HLS are not currently supported.

  • Captions - Sidecar captions in any video configuration are not currently supported. This clarification is also present in the Cast plugin release note for the Brightcove Android SDK v6.3.0 release.

Version 6.4.0

17 Oct 2018

SDK Changes:

  • The Brightcove Native SDK for Android now supports Android 9.0 (Pie). Please note that with the Android Pie release you must be aware of some important changes, such as Network TLS enabled by default, Apache HTTP client deprecation and the deprecation of Android ConnectivityManager constants. You might need to make additional changes in your application. For more information, please visit https://support.brightcove.com/android-pie-support-native-sdk-android.

  • The DefaultSourceSelectionController and ExoPlayerSourceSelectionController will now prefer HTTPS sources in its selection if available, otherwise the selection controller will select the first source available.

Older releases

Version 6.3.2

24 Sep 2018

SDK Changes:

  • Fixed an issue where the Settings button in Android TV was not working as expected.

  • Fixed an issue where getRefereiceId() and getDescription() in the Video class were not working as expected.

  • Added a method, getLongDescription(), to the Video class.

  • Fixed an issue in the OfflineCatalog class where calling setDownloadPath with a null argument caused a NullPointerException.

  • Fixed an issue in the OfflineCatalog class where calling the estimateSize method could return an unexpectedly large value.

  • Fixed an issue where an Activity that was not enabled for Picture-In-Picture would throw a non-fatal IllegalStateException. The error is now logged as a warning.

  • Deprecated support for the BrightcoveClosedCaptioningSurfaceView class.

OnceUx Plugin Changes:

  • Added support for the VAST Icon element.

Version 6.3.1

09 Aug 2018

SDK Changes:

  • Fixed an issue where Android Studio will throw an exception in the Layout Editor when rendering the BrightcoveVideView.

ExoPlayer v2 Changes:

  • Added LoadControlConfig and AllocatorConfig classes. The values set in these classes will be used to create the ExoPlayer DefaultLoadControl object, which is used when creating the ExoPlayer instance. The AllocatorConfig may be set when creating the LoadControlConfig. The LoadControlConfig may be set to the ExoPlayerVideoDisplayComponent instance.

OnceUx Plugin Changes:

  • Fixed an issue where the default poster image shown in the BrightcoveVideoView will not disappear after the preroll starts playing.

Version 6.3.0

27 July 2018

Cast Plugin Changes: The Cast Plugin has been updated with a dependency on the ExoPlayer Cast Extension v2.7.0. Please note that certain VideoCloud features have limited support, or are not yet supported when using Cast plugin with the Google sample receiver app.

  • Android 9 - Testing has shown that the following permission is required to use Chromecast with Android 9, in particular when the app is backgrounded and brought back to the foreground, and in order to use notifications to control a casting session. This uses-permission tag should be added to an app's AndroidManifest.xml: <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>

  • Captions - Testing has shown that in-manifest captions only with Dynamic Delivery DASH display as expected.

  • Captions - In-manifest captions with HLS are not currently supported.

  • Captions - Sidecar captions in any video configuration are not currently supported.

  • Widevine Modular DRM is not supported when using the Cast plugin with the Google sample receiver app.

  • Multiple Audio Tracks are not supported when using the Cast plugin with the Google sample receiver app.

  • Client-side and Server-side Advertising is not supported when using the Cast plugin with the Google sample receiver app.

  • Live and Live DVR streams are not supported when using the Cast plugin with the Google sample receiver app.

FreeWheel Plugin Changes:

  • The FreeWheel plugin has been updated to support FreeWheel AdManager v6.23.0. Please note that this is a breaking change, and that this version of the Brightcove Native SDK for Android will not work with previous versions of FreeWheel AdManager. Please refer to the release notes in FreeWheel AdManager v6.23.0 for more information on the changes in that version.

IMA Plugin Changes:

  • The IMA Plugin now supports v3.9.0 of the Google IMA SDK for Android.

Version 6.2.3

16 July 2018

SDK Changes:

  • Offline Playback: Upgraded the FileDownloader library version to 1.7.4.

  • Offline Playback: Fixed an issue where backgrounding the app and changing network status could throw an IllegalArgumentException.

Version 6.2.2

9 July 2018

ExoPlayer v2 Changes:

  • Fixed an issue where values in the HEADERS field of the Video object were not being added as expected.

OnceUx Plugin Changes:

  • Fixed an issue where seeking without ads during the video could result in ad events still being fired.

Version 6.2.1

5 June 2018

ExoPlayer v2 Changes:

  • The Brightcove ExoPlayer has been reverted to v2.7.0, to work around a regression in backward seek behavior in live streams, and an unexpected change in how the Live Window Range value is calculated.

  • Fixed an issue with the calculation for BrightcoveSegmentTemplate.getSegmentCount when the DASH manifest has the startNumber parameter different than 0.

  • Added a validation for a potential NullPointerException in ExoPlayerVideoDisplayComponent.reportPlayerState

Version 6.2.0

18 May 2018

SDK Changes:

  • Added a VideoParser class with methods to build a Video and a Playlist from a JSON object, following the Brightcove Playback API response format.

  • Overloaded the requestPurchaseLicense() and requestRentalLicense() methods in the OfflineCatalog class in order to set the OutputProtection through the CustomerRightsTokenConfig object.

  • Updated the FileDownloader library to 1.7.3 for Offline Playback.

  • Fixed a race condition for Offline Playback when deleting multiple videos while being downloaded.

ExoPlayer v2 Changes:

  • The Brightcove ExoPlayer has been updated to 2.7.3.

  • The following methods were deprecated from BrightcoveDrmSession interface:

    • DrmException getDrmError()

    • Map<String, String> queryKeyStatus()

    • byte[] getOfflineLicenseKeySetId()

OnceUx Plugin Changes:

  • Added support to parse and read all Ad Creative IDs from SSAI VMAP.

  • Removed requirement for id attribute in Ad tag.

Version 6.1.2

24 Apr 2018

SDK Changes:

  • Fixed an issue where the download would not resume in slow networks (down to 256kbps) after killing and restarting the app.

OnceUx Plugin Changes:

  • Fixed an issue where all ads will be played after seeking over multiple ad pods.

Version 6.1.1

6 Apr 2018

SDK Changes:

  • Fixed an Offline Analytics dependency that was unexpectedly increasing app sizes.

  • Fixed an issue with Offline Playback where some downloads were hanging at 99%.

Version 6.1.0

29 Mar 2018

SDK Changes:

  • Added support for Picture-in-Picture on Android Oreo.

  • Fixed a UI performance issue for Offline Playback when downloading a video by making all Download Manager callbacks on a background thread.

  • Improvement in download speeds for Offline Playback.

  • Fixed an Offline Playback issue where the download_id parameter was missing from video_download_request and video_download_cancellation events for clear downloads.

  • Fixed an issue with WebVTT captions where using the "line:" attribute without a percentage (%) character was preventing the captions from displaying.

  • AbstractOfflineCatalog.renewLicense method is deprecated and is now non-functional. To renew an offline license, please use either AbstractOfflineCatalog.requestRentalLicense(Video, Date, long, EventListener) or AbstractOfflineCatalog.requestPurchaseLicense(Video, EventListener)

ExoPlayer2 changes:

  • ExoPlayer2 now reports the cumulative number of bytes downloaded through the current video engagement event and sends it to the Analytics server as media_bytes_transferred.

  • Added a convenience method to set the peak bitrate before preparing the player for a new video, or any time ExoPlayerVideoDisplayComponent.setPeakBitrate(int peakBitrate) is called.

Version 6.0.2

30 Jan 2018

SDK Changes:

  • Added support for offline playback analytics.

  • The deprecated Widevine Classic plugin has been removed.

IMA Plugin Changes:

  • Fixed an issue where viewable_impression beacons were not being fired as expected.

OnceUX Plugin Changes:

  • Fixed an issue where ad markers were not being displayed in their expected locations.

  • Fixed issues involving seeking past advertisements, and resuming playback from the intended seek position.

  • Fixed issues where player controls would appear in SSAI ads on orientation changes.

Version 6.0.1

18 Dec 2017

SDK Changes:

  • The deprecated legacy Media API classes, those in the com.brightcove.player.media package, were removed from the Brightcove Native SDK for Android.

  • The following classes were moved from com.brightcove.player.media to com.brightcove.player.model. Please note this is a breaking change:

    • DeliveryType

    • CaptionType

    • ErrorFields

    • VideoFields

ExoPlayer v2 Changes:

  • The Brightcove Native SDK for Android using ExoPlayer 2 (v2.5.3) is in General Availability.

  • Added support for the Omniture plugin when using ExoPlayer 2.

  • Several bug fixes.

ExoPlayer v1 Changes:

  • The Brightcove Native SDK for Android using ExoPlayer 1 has been deprecated. For more information about the migration process, please visit https://support.brightcove.com/migrating-exoplayer-2-framework

Complete release notes

For a complete list of release notes, see the Brightcove Native SDK for Android Release Notes.