Overview
The Brightcove Native SDK for Android is available in a major version release 7, bringing important changes in how it is built. This version includes new functionality to support the following:
- Low Latency for HLS live streaming
- Android 12 compatibility
SDK changes
With this release of the Native SDK for Android, the MediaPlayer class is no longer supported for content playback.
Android 12 compatibility
The Native SDK for Android now offers Android OS 12 compatibility, and all of the features in Android 12 should work as expected. Brightcove recommends that you review the changes in Android 12 and modify your application code as needed.
For details, see the Android 12 features and changes list reference.
ExoPlayer upgrade
The Native SDK for Android 7 includes a new version of the ExoPlayer, upgrading from v2.14.2 to v2.17.1. Review all of the updates to the ExoPlayer library releases.
Most of the ExoPlayer changes are handled internally by the Native SDK for Android, but there are some changes reflected in the public API:
- The following interface no longer requires a parameter:
DrmSession<T extends ExoMediaCrypto>
- The following interface no longer requires a parameter:
ExoPlayerDrmSessionManager<T extends ExoMediaCrypto>
The
ExoPlayerDrmSessionManagerclass now exposes adefaulDrmSessionManagerobject that can be used in MediaSource objects to set a DRM session manager- In the
TrackSelectorHelperclass, the following method is deprecated:
and is replaced withupdateTracksSelectionArray(@Nullable TrackSelectionArray trackSelections)updateTracksGroupInfos(@Nullable ImmutableListtrackGroupInfos)
- In the
MediaSourceUtilclass, the following method is deprecated:
and is replaced withfindRenditionUrl(@NonNull HlsMasterPlaylist hlsMasterPlaylist, int trackType, @NonNull Format format)findRenditionUrl(@NonNull HlsMultivariantPlaylist hlsMasterPlaylist, int trackType, @NonNull Format format)
In the
ExoAdPlayerclass, The constructor requires aStyledPlayerViewinstead of aPlayerView- The following class is deprecated:
and is replaced withDashAudioTrackSelectorExoPlayerVideoDisplayComponent.setPeakBitrate(int)
- The following class is deprecated:
and is replaced withDashPeakBitRateTrackSelectorExoPlayerVideoDisplayComponent.setPeakBitrate(int)
- The following class is deprecated:
and is replaced withHLSPeakBitrateTrackSelectorExoPlayerVideoDisplayComponent.setPeakBitrate(int)
Gradle and Java Upgrades
Upgrading the ExoPlayer requires the following:
- Gradle 7.4
- Java 11
With the Native SDK for Android 7, you must upgrade both of these environmental dependencies.
Plugin changes
With this release of the Native SDK for Android, there are changes with some of the associated plugins.
Cast plugin
In the GoogleCastComponent class, the following methods now return void instead of PendingResult <RemoteMediaClient.MediaChannelResult>.
loadItem(MediaQueueItem, int)addItems(MediaQueueItem)
IMA plugin
The Google IMA SDK dependency has been upgraded to 3.27.0. This upgrade includes support for Android 12.
SSAI plugin
The SSAIComponent now supports the use of a Brightcove VideoCloud VMAP XML object as a source. To use a VideoCloud VMAP XML object as a source, call SSAIComponent.processVideo(String vmapXmlString).