Class ThumbsPlugin
- java.lang.Object
-
- com.castlabs.android.Plugin
-
- com.castlabs.sdk.thumbs.ThumbsPlugin
-
public class ThumbsPlugin extends Plugin
This plugin can be registered with the player to add support for thumbnails in different formats.The plugin module exposes two main interfaces,
ThumbnailLoaderto load raw images from a data source andThumbnailProviderthat handles the asynchronous delivery to a view.The plugin expose a default
ThumbnailProviderthroughPlayerController.getComponent(Class)if playback is started with an intent bundle, i.e.PlayerController.open(Bundle)is used to start playback. The provider assumes that you add an instance ofThumbnailDataTrackwith the keyINTENT_THUMBNAILS_DATAto the bundle. If that is the case the provider will be fully initialized and can be accessed through:
The provider can then be used in aThumbnailProvider provider = playerController.getComponent(ThumbnailProvider.class);Viewto render thumbnail images. The plugin also providesDefaultThumbnailViewas a default implementation. You can use that view to add it manually to you view hierarchy, but you can also register the plugin with the default view component enabled. In that case in instance ofDefaultThumbnailViewwill automatically added to thePlayerViewand will be initialized with the provider component. In that case you can access the component throughPlayerView.getComponent(Class), for example:ThumbnailViewComponent thumbsView = playerView.getComponent(ThumbnailViewComponent.class);The view component exposes
ThumbsPlugin.ThumbnailViewComponent.show(long, DefaultThumbnailView.Callback)andThumbsPlugin.ThumbnailViewComponent.hide()to control thumbnail rendering.- Since:
- 4.0.0
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classThumbsPlugin.ThumbnailViewComponentIf you registered the plugin with the default view integration enabled, this component will be registered with thePlayerViewand you can access it to trigger displaying thumbnails.
-
Field Summary
Fields Modifier and Type Field Description static LoadingStrategyDEFAULT_LOADING_STRATEGYDefault loading strategy for thumbnails.static StringINTENT_THUMBNAILS_DATADeprecated.in favour ofSdkConsts.INTENT_SIDELOADED_TRACKS_ARRAYLISTandSideloadedTrack.ThumbnailBuilder.static intPRESTO_DEFAULT_THUMBNAIL_VIEWId for the defaultDefaultThumbnailViewstatic LoadingStrategySEQUENTIAL_LOADING_STRATEGYSequential loading strategy.static intTHUMB_TEST_TESTTest teststatic intTHUMBNAIL_INDEX_CLOSESTWhen used inDefaultThumbnailView.show(long, DefaultThumbnailView.Callback, int)will render the closest thumbnail.static intTHUMBNAIL_INDEX_CURRENTWhen used inDefaultThumbnailView.show(long, DefaultThumbnailView.Callback, int)will render the current thumbnail.static intTHUMBNAIL_INDEX_NEXTWhen used inDefaultThumbnailView.show(long, DefaultThumbnailView.Callback, int)will render the next thumbnail.
-
Constructor Summary
Constructors Constructor Description ThumbsPlugin(boolean useDefaultView)Create a new instance of this plugin.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static ThumbnailProvidercreateProvider(PlayerController playerController, ThumbnailDataTrack thumbnailData, LoadingStrategy loadingStrategy, String manifestUrl)Same ascreateProvider(PlayerController, ThumbnailDataTrack, LoadingStrategy, String, ThumbnailLoader)but with a default loader implementation.static ThumbnailProvidercreateProvider(PlayerController playerController, ThumbnailDataTrack thumbnailData, LoadingStrategy loadingStrategy, String manifestUrl, com.castlabs.sdk.thumbs.ThumbnailLoader loader)Create a thumbnail provider based on thetype.StringgetId()voidsetLoadingStrategy(LoadingStrategy loadingStrategy)Sets theLoadingStrategyto use for loading thumbnails.-
Methods inherited from class com.castlabs.android.Plugin
init, onRemotePlay
-
-
-
-
Field Detail
-
INTENT_THUMBNAILS_DATA
public static final String INTENT_THUMBNAILS_DATA
Deprecated.in favour ofSdkConsts.INTENT_SIDELOADED_TRACKS_ARRAYLISTandSideloadedTrack.ThumbnailBuilder.Use this key to storeThumbnailDataTrackin an intent.- See Also:
- Constant Field Values
-
DEFAULT_LOADING_STRATEGY
public static final LoadingStrategy DEFAULT_LOADING_STRATEGY
Default loading strategy for thumbnails. Load will be triggered upon the first Thumbnail request. Defines 3 waves:- 1 Minute: A thumbnail will be loaded for every minute of the content
- 15 Seconds: A thumbnail will be loaded for every 15 seconds of the content
- All thumbnails will be loaded
-
SEQUENTIAL_LOADING_STRATEGY
public static final LoadingStrategy SEQUENTIAL_LOADING_STRATEGY
Sequential loading strategy. Naive strategy which simply loads all thumbnails sequentially. Thumbnails will start to load immediately. Corresponds to the legacy behaviour beforeLoadingStrategywas introduced.
-
PRESTO_DEFAULT_THUMBNAIL_VIEW
@IdRes public static final int PRESTO_DEFAULT_THUMBNAIL_VIEW
Id for the defaultDefaultThumbnailView
-
THUMBNAIL_INDEX_CURRENT
public static final int THUMBNAIL_INDEX_CURRENT
When used inDefaultThumbnailView.show(long, DefaultThumbnailView.Callback, int)will render the current thumbnail. This corresponds to the thumbnail with the highest media time that is lower than the requested position.- See Also:
- Constant Field Values
-
THUMBNAIL_INDEX_NEXT
public static final int THUMBNAIL_INDEX_NEXT
When used inDefaultThumbnailView.show(long, DefaultThumbnailView.Callback, int)will render the next thumbnail. This corresponds to the thumbnail with the lowest media time that is higher than the requested position.- See Also:
- Constant Field Values
-
THUMBNAIL_INDEX_CLOSEST
public static final int THUMBNAIL_INDEX_CLOSEST
When used inDefaultThumbnailView.show(long, DefaultThumbnailView.Callback, int)will render the closest thumbnail. This corresponds to the thumbnail with the lowest difference between its media time and the requested position.- See Also:
- Constant Field Values
-
THUMB_TEST_TEST
public static final int THUMB_TEST_TEST
Test test- See Also:
- Constant Field Values
-
-
Constructor Detail
-
ThumbsPlugin
public ThumbsPlugin(boolean useDefaultView)
Create a new instance of this plugin. You can specify if the default renderer view should be registered. If you want to use the default renderer view, seeThumbsPlugin.ThumbnailViewComponentfor more information how to access and use the view.- Parameters:
useDefaultView- Register the default renderer view
-
-
Method Detail
-
setLoadingStrategy
public void setLoadingStrategy(@NonNull LoadingStrategy loadingStrategy)Sets theLoadingStrategyto use for loading thumbnails. Applies for VTT, JPG and DASH embedded thumbnails.- Parameters:
loadingStrategy- the strategy to use. Must be non null and contain at least one Wave.- See Also:
LoadingStrategy
-
createProvider
@Nullable public static ThumbnailProvider createProvider(@NonNull PlayerController playerController, @NonNull ThumbnailDataTrack thumbnailData, @NonNull LoadingStrategy loadingStrategy, @Nullable String manifestUrl)
Same ascreateProvider(PlayerController, ThumbnailDataTrack, LoadingStrategy, String, ThumbnailLoader)but with a default loader implementation.- Parameters:
playerController- The player controller instancethumbnailData- The thumbnail dataloadingStrategy- The thumbnail loading strategymanifestUrl- URL to the manifest that is used to infer the absolute URL to the thumbnails in caseurlis relative- Returns:
- The provider
- Throws:
IllegalArgumentException- in case the type of the thumbnail format is not specified and could not be inferred.
-
createProvider
@Nullable public static ThumbnailProvider createProvider(@NonNull PlayerController playerController, @NonNull ThumbnailDataTrack thumbnailData, @NonNull LoadingStrategy loadingStrategy, @Nullable String manifestUrl, @Nullable com.castlabs.sdk.thumbs.ThumbnailLoader loader)
Create a thumbnail provider based on thetype. If the type is unknown, it will be inferred from the extension (i.e. .bif, .vtt, or .jpg of the URL. If the type could not be inferred, an exception is raised.- Parameters:
playerController- The player controller instancethumbnailData- The thumbnail dataloadingStrategy- The thumbnail loading strategymanifestUrl- URL to the manifest that is used to infer the absolute URL to the thumbnails in caseurlis relativeloader- The thumbnail loader. Ifnullthe default loader will be generated- Returns:
- The provider
- Throws:
IllegalArgumentException- in case the type of the thumbnail format is not specified and could not be inferred.
-
-