Class AbstractOfflineCatalog

    • Constructor Detail

      • AbstractOfflineCatalog

        @Deprecated
        public AbstractOfflineCatalog​(android.content.Context context,
                                      EventEmitter eventEmitter,
                                      java.lang.String account,
                                      java.lang.String policy,
                                      java.lang.String baseURL)
        Deprecated.
        Base constructor for AbstractOfflineCatalog. Creates an ExternalFileCreator as its DownloadFileCreator.
        Parameters:
        context - an instance of a Context.
        eventEmitter - an instance of an EventEmitter.
        account - Account id from VideoCloud.
        policy - Policy Key from VideoCloud.
        baseURL - Playback API base url.
      • AbstractOfflineCatalog

        @Deprecated
        public AbstractOfflineCatalog​(android.content.Context context,
                                      EventEmitter eventEmitter,
                                      java.lang.String account,
                                      java.lang.String policy,
                                      java.lang.String baseURL,
                                      @NonNull
                                      DownloadFileCreator downloadFileCreator)
        Deprecated.
        Constructor for AbstractOfflineCatalog with a custom DownloadFileCreator.
        Parameters:
        context - an instance of a Context.
        eventEmitter - an instance of an EventEmitter.
        account - Account id from VideoCloud.
        policy - Policy Key from VideoCloud.
        baseURL - Playback API base url.
        downloadFileCreator - DownloadFileCreator to retrieve a directory to store offline content.
    • Method Detail

      • getDownloadPath

        @Nullable
        public java.io.File getDownloadPath()
        Gets the current base path that will be used to store new offline video requests.
        Returns:
        the download path.
      • setDownloadPath

        public void setDownloadPath​(@NonNull
                                    java.io.File downloadPath)
                             throws InvalidDownloadPathException

        Sets the base path that must be used to store new offline video requests. Changing the location will not change location of any downloads that are either currently being downloaded or have been downloaded already.

        Please note that by default the AbstractOfflineCatalog uses a secure location on the host device that is accessible only by the host application and will be cleaned automatically, if the host application is uninstalled. If you change this path, the you will be responsible ensure it is secure and will be cleaned automatically

        Though Android OS will make an attempt to clean the download media placed this folder, the Android OS does not guarantee that will be in fact clean all the files.

        Parameters:
        downloadPath - the download path. Must be a file URI to a path on external storage, and the calling application must have the WRITE_EXTERNAL_STORAGE permission.
        Throws:
        InvalidDownloadPathException - when the download path is not valid.
        See Also:
        isDownloadPathValid(), RequestConfig.setDownloadPath(File)
      • isVideoDownloadable

        public boolean isVideoDownloadable​(@Nullable
                                           Video video)

        Checks if the video parameter can be downloaded and the directory to store the downloaded video files is valid.

        Suggestion: If your app has a download button use this method to check if you can show it.

        Parameters:
        video - Video to check if it is possible to download.
        Returns:
        true if the video can be downloaded.
        See Also:
        DownloadFileCreator
      • isDownloadPathValid

        public boolean isDownloadPathValid()

        Checks whether the download path is valid.

        Returns:
        true if the download path is valid.
      • isMobileDownloadAllowed

        public boolean isMobileDownloadAllowed()
        This method can be used to check if the SDK is currently configured to use a cellular network for downloading DRM media assets.

        By default the SDK will not use a cellular network. This setting must be enabled explicitly by the developer.

        Returns:
        true if cellular network is allowed.
      • setMobileDownloadAllowed

        public void setMobileDownloadAllowed​(boolean mobileDownloadAllowed)
        This method can be used to configure the SDK whether the cellular network may be used to download DRM media assets or not.

        The developer will be responsible to include the necessary logic in the host application to prompt the user and expose the setting to the user.

        Parameters:
        mobileDownloadAllowed - true if cellular network is allowed.
      • isRoamingDownloadAllowed

        public boolean isRoamingDownloadAllowed()
        This method can be used to check if the SDK is currently configured to use a cellular roaming network for downloading DRM media assets.

        By default the SDK will not use cellular roaming network. This setting must be enabled explicitly by the developer.

        Returns:
        true if roaming is allowed.
      • setRoamingDownloadAllowed

        public void setRoamingDownloadAllowed​(boolean roamingDownloadAllowed)
        This method can be used to configure the SDK whether the cellular roaming network may be used downloading DRM media assets.

        The developer will be responsible to include the necessary logic in the host application to prompt the user and expose the setting to the user.

        Parameters:
        roamingDownloadAllowed - true if roaming is allowed.
      • isMeteredDownloadAllowed

        public boolean isMeteredDownloadAllowed()
        Returns whether download over a metered network is allowed. By default the SDK will not use a metered network.
        Returns:
        true if allowed
        See Also:
        setMeteredDownloadAllowed(boolean)
      • setMeteredDownloadAllowed

        public void setMeteredDownloadAllowed​(boolean meteredDownloadAllowed)
        Sets whether download over a metered network is allowed.
        Parameters:
        meteredDownloadAllowed - whether metered is allowed
      • setVideoBitrate

        public void setVideoBitrate​(int videoBitrate)
        Sets the video bitrate cap which will be used to determine what rendition will be downloaded. If there's no rendition lower than the video bitrate provided, the next higher will be picked.
        Parameters:
        videoBitrate - the video bitrate
      • estimateSize

        public long estimateSize​(Video video)
        This method returns the approximate total size for a Video already downloaded or with a download in progress. The estimate will include the size of the video, subtitles and other assets such as thumbnails. The actual size of the video on the host device may vary based on the partition type and format of the storage. If you attempt to get the estimated size for a Video that has not been downloaded, you will get a size of 0. Use the estimateSize(Video, MediaDownloadable.OnVideoSizeCallback) for this scenario.
        Parameters:
        video - - reference to the video to be estimated.
        Returns:
        the size of the video
        See Also:
        estimateSize(Video, MediaDownloadable.OnVideoSizeCallback)
      • estimateSize

        public void estimateSize​(@NonNull
                                 Video video,
                                 @NonNull
                                 MediaDownloadable.OnVideoSizeCallback callback)
                          throws InvalidDownloadPathException
        This method is used to determine the approximate total size of all assets needed to store the video on the host device. The estimate will include the size of the video, subtitles and other assets such as thumbnails. The actual size of the video on the host device may vary based on the partition type and format of the storage. NOTE: This method requires the Media Manifest to retrieve the requested information, therefore it might download the manifest and store it to the directory provided by getDownloadPath(), if it has not been done already. If this directory is invalid, it will throw a InvalidDownloadPathException.
        Parameters:
        video - reference to the video to be estimated.
        callback - to return the video size.
        Throws:
        InvalidDownloadPathException - when the current download path is invalid.
        See Also:
        isDownloadPathValid()
      • cancelVideoDownload

        public boolean cancelVideoDownload​(@NonNull
                                           Video video)

        Cancels a video download that has not been completed yet. Operations to cancel the video download will block the UI thread. For asynchronous version use cancelVideoDownload(Video, OfflineCallback). If the video has been downloaded already, then calling this method will have no effect. Please call deleteVideo(Video) method instead to delete the video.

        Parameters:
        video - the video to be cancelled.
        Returns:
        true if the download was found in the download queue and removed, otherwise false.
        See Also:
        cancelVideoDownload(Video, OfflineCallback)
      • cancelVideoDownload

        public void cancelVideoDownload​(@NonNull
                                        Video video,
                                        @NonNull
                                        OfflineCallback<java.lang.Boolean> callback)

        Asynchronously cancels a video download that has not been completed yet. If the video has been downloaded already, then calling this method will have no effect. Please call deleteVideo(Video) method instead to delete the video.

        Parameters:
        video - The video to be cancelled.
        callback - Provides the result of the operation. In case the download of the requested video has been canceled successfully, OfflineCallback.onSuccess(Object) will be called to provide a Boolean with its value as 'true' if the download was found in the download queue and removed, otherwise 'false'. OfflineCallback.onFailure(Throwable) will be called in case there was an error.
      • cancelVideoDownload

        public boolean cancelVideoDownload​(@NonNull
                                           java.lang.String videoId)

        Cancels a video download that has not been completed yet. Operations to cancel the video download will block the UI thread. For asynchronous version use cancelVideoDownload(String, OfflineCallback). If the video has been downloaded already, then calling this method will have no effect. Please call deleteVideo(Video) method instead to delete the video.

        Parameters:
        videoId - the video id.
        Returns:
        true if the download was found in the download queue and removed, otherwise false.
        See Also:
        cancelVideoDownload(String, OfflineCallback)
      • cancelVideoDownload

        public void cancelVideoDownload​(@NonNull
                                        java.lang.String videoId,
                                        @NonNull
                                        OfflineCallback<java.lang.Boolean> callback)

        Asynchronously cancels a video download that has not been completed yet. If the video has been downloaded already, then calling this method will have no effect. Please call deleteVideo(Video) method instead to delete the video.

        Parameters:
        videoId - The id of the video to be cancelled.
        callback - Provides the result of the operation. In case the download of the requested video has been canceled successfully, OfflineCallback.onSuccess(Object) will be called to provide a Boolean with its value as 'true' if the download was found in the download queue and removed, otherwise 'false'. OfflineCallback.onFailure(Throwable) will be called in case there was an error.
      • pauseVideoDownload

        public int pauseVideoDownload​(Video video)
        This method is used to pause a single video being downloaded. Operations to pause the video download will block the UI thread. For asynchronous version use pauseVideoDownload(Video, OfflineCallback).
        Parameters:
        video - the video to be paused.
        Returns:
        the current status of the video download.
        Throws:
        java.lang.UnsupportedOperationException - if the underlying download process does not support pausing video downloads.
        See Also:
        pauseVideoDownload(Video, OfflineCallback)
      • pauseVideoDownload

        public void pauseVideoDownload​(@NonNull
                                       Video video,
                                       @NonNull
                                       OfflineCallback<java.lang.Integer> callback)
        This method is used to asynchronously pause a single video being downloaded.
        Parameters:
        video - The video to be paused.
        callback - Provides the result of the operation. In case the download of the requested video has been paused successfully, OfflineCallback.onSuccess(Object) will be called to provide an Integer value of its current DownloadStatus.StatusCode. OfflineCallback.onFailure(Throwable) will be called in case there was an error.
      • pauseVideoDownload

        public int pauseVideoDownload​(@NonNull
                                      java.lang.String videoId)
        This method is used to pause a single video being downloaded. Operations to pause the video download will block the UI thread. For asynchronous version use pauseVideoDownload(String, OfflineCallback).
        Parameters:
        videoId - the video id.
        Returns:
        the current status of the video download.
        Throws:
        java.lang.UnsupportedOperationException - if the underlying download process does not support pausing video downloads.
        See Also:
        pauseVideoDownload(String, OfflineCallback)
      • pauseVideoDownload

        public void pauseVideoDownload​(@NonNull
                                       java.lang.String videoId,
                                       @NonNull
                                       OfflineCallback<java.lang.Integer> callback)
        This method is used to asynchronously pause a single video being downloaded.
        Parameters:
        videoId - The id of the video to be paused.
        callback - Provides the result of the operation. In case the download of the requested video has been paused successfully, OfflineCallback.onSuccess(Object) will be called to provide an Integer value of its current DownloadStatus.StatusCode. OfflineCallback.onFailure(Throwable) will be called in case there was an error.
      • resumeVideoDownload

        public int resumeVideoDownload​(@NonNull
                                       Video video)
        This method is used to resume the download of a video which was previously paused. Operations to resume the video download will block the UI thread. For asynchronous version use resumeVideoDownload(Video, OfflineCallback).
        Parameters:
        video - the video to resume its download.
        Throws:
        java.lang.UnsupportedOperationException - if the underlying download process does not support pausing video downloads.
        See Also:
        resumeVideoDownload(Video, OfflineCallback)
      • resumeVideoDownload

        public void resumeVideoDownload​(@NonNull
                                        Video video,
                                        @NonNull
                                        OfflineCallback<java.lang.Integer> callback)
        This method is used to asynchronously resume the download of a video which was previously paused.
        Parameters:
        video - the video to resume its download.
        callback - Provides the result of the operation. In case the download of the requested video has been resumed successfully, OfflineCallback.onSuccess(Object) will be called to provide an Integer value of its current DownloadStatus.StatusCode. OfflineCallback.onFailure(Throwable) will be called in case there was an error. UnsupportedOperationException if the underlying download process does not support pausing video downloads.
      • resumeVideoDownload

        public int resumeVideoDownload​(@NonNull
                                       java.lang.String videoId)
        This method is used to resume a single video being downloaded which was previously paused. Operations to resume the video download will block the UI thread. For asynchronous version use resumeVideoDownload(String, OfflineCallback).
        Parameters:
        videoId - the video id.
        Returns:
        the current status of the video download.
        Throws:
        java.lang.UnsupportedOperationException - if the underlying download process does not support pausing video downloads.
        See Also:
        resumeVideoDownload(String, OfflineCallback)
      • resumeVideoDownload

        public void resumeVideoDownload​(@NonNull
                                        java.lang.String videoId,
                                        @NonNull
                                        OfflineCallback<java.lang.Integer> callback)
        This method is used to asynchronously resume the download of a video which was previously paused.
        Parameters:
        videoId - the Id of the video to resume its download.
        callback - Provides the result of the operation. In case the download of the requested video has been resumed successfully, OfflineCallback.onSuccess(Object) will be called to provide an Integer value of its current DownloadStatus.StatusCode. OfflineCallback.onFailure(Throwable) will be called in case there was an error. UnsupportedOperationException if the underlying download process does not support pausing video downloads.
      • deleteVideo

        public boolean deleteVideo​(@NonNull
                                   Video video)
        This method can be used to remove all assets related to a single video from the host device. Deleting a video download will not cause the license to be deleted/released. Please call releaseLicense(Video, EventListener) to release and remove the license. Operations to delete the video download will block the UI thread. For asynchronous version use deleteVideo(Video, OfflineCallback).
        Parameters:
        video - to be deleted.
        Returns:
        true if the video was found in the download queue and deleted, otherwise false.
        See Also:
        deleteVideo(Video, OfflineCallback)
      • deleteVideo

        public boolean deleteVideo​(@NonNull
                                   java.lang.String videoId)
        Deletes the offline copy of the specified video. If the video has not been fully downloaded yet, then it will be removed from the download queue and any partially download assets belonging to the video will be deleted. The developer is responsible for either releasing any license key set identifier attached to the video using releaseLicense(Video, EventListener) or saving the license key set identifier for future reuse. Operations to delete the video download will block the UI thread. For asynchronous version use deleteVideo(String, OfflineCallback).
        Parameters:
        videoId - the unique identified of the video to be deleted.
        Returns:
        true if the video was removed from the download queue and the storage, otherwise false.
        See Also:
        deleteVideo(String, OfflineCallback)
      • getVideoDownloadStatus

        public DownloadStatus getVideoDownloadStatus​(@NonNull
                                                     Video video)
        Gets the status of previous video download request. Please note that this is a blocking call. Checking the status of large video with multiple assets may take time. Operations to retrieve the video download status will block the UI thread. For asynchronous version use getVideoDownloadStatus(Video, OfflineCallback).
        Parameters:
        video - the video being downloaded.
        Returns:
        the video download status.
        See Also:
        getVideoDownloadStatus(Video, OfflineCallback)
      • getVideoDownloadStatus

        @NonNull
        public DownloadStatus getVideoDownloadStatus​(@NonNull
                                                     java.lang.String videoId)
        Gets the status of previous video download request. Please note that this is a blocking call. Checking the status of large video with multiple assets may take time. Operations to retrieve the video download status will block the UI thread. For asynchronous version use getVideoDownloadStatus(String, OfflineCallback).
        Parameters:
        videoId - The id of the video which DownloadStatus will be retrieved.
        Returns:
        the video download status.
        See Also:
        getVideoDownloadStatus(String, OfflineCallback)
      • findAllQueuedVideoDownload

        @NonNull
        public java.util.List<Video> findAllQueuedVideoDownload()
        This method returns the list of videos that have been queued for download. The result will include all videos that have been placed in the download queue, including those that have been downloaded successfully. Please call getVideoDownloadStatus(Video) to find the current download status of each video. Operations to retrieve the queued videos will block the UI thread. For asynchronous version use findAllQueuedVideoDownload(OfflineCallback).
        Returns:
        the list of enqueued videos for download.
        See Also:
        findAllQueuedVideoDownload(OfflineCallback)
      • findAllVideoDownload

        @NonNull
        public java.util.List<Video> findAllVideoDownload​(int status)
        Finds all offline video downloads with specified status. Operations to retrieve all videos will block the UI thread. For asynchronous version use findAllVideoDownload(int, OfflineCallback).
        Parameters:
        status - the status of the video download.
        Returns:
        the list of completed video downloads.
        See Also:
        findAllVideoDownload(int, OfflineCallback)
      • findOfflineVideoById

        @Nullable
        public Video findOfflineVideoById​(java.lang.String videoId)
        Finds the offline copy of the specified video, if it exists. Please note that a non-null return value does not mean the video has been completely downloaded. Please use getVideoDownloadStatus(Video) method to determine the current status of the offline copy. Operations to retrieve the video will block the UI thread. For asynchronous version use findOfflineVideoById(String, OfflineCallback).
        Parameters:
        videoId - the video id.
        Returns:
        null if the offline copy of video was not found, otherwise the offline copy of the video
        See Also:
        findOfflineVideoById(String, OfflineCallback)
      • findOfflineVideoById

        @Nullable
        public Video findOfflineVideoById​(java.lang.String videoId,
                                          @NonNull
                                          HttpRequestConfig httpRequestConfig)
        Finds the offline copy of the specified video, if it exists. Please note that a non-null return value does not mean the video has been completely downloaded. Please use getVideoDownloadStatus(Video) method to determine the current status of the offline copy. Operations to retrieve the video will block the UI thread. For asynchronous version use findOfflineVideoById(String, HttpRequestConfig, OfflineCallback).
        Parameters:
        videoId - The id of the video to retrieve.
        httpRequestConfig - Http parameters when retrieving the video. Use HttpRequestConfig.empty() instead of null.
        Returns:
        null if the offline copy of video was not found, otherwise the offline copy of the video.
      • requestRentalLicense

        public void requestRentalLicense​(@NonNull
                                         Video video,
                                         @NonNull
                                         java.util.Date absoluteExpiration,
                                         long playDuration,
                                         @NonNull
                                         EventListener listener)
        Submits an offline playback rental license request for the specified video asynchronously. Upon successful acquisition of license, the video object will be updated to set the license key set identifier and actual expiration date.
        Parameters:
        video - the video for which the offline playback license should be acquired.
        absoluteExpiration - defines how long the license is valid to start playback.
        playDuration - defines in milliseconds how long the content can be consumed after the start of playback.
        listener - reference to a listener that will be notified about the outcome of the request.
      • requestRentalLicense

        public void requestRentalLicense​(@NonNull
                                         Video video,
                                         @NonNull
                                         java.util.Date absoluteExpiration,
                                         long playDuration,
                                         @NonNull
                                         EventListener listener,
                                         @NonNull
                                         CustomerRightsTokenConfig config)
        Submits an offline playback rental license request for the specified video asynchronously. Upon successful acquisition of license, the video object will be updated to set the license key set identifier and actual expiration date.
        Parameters:
        video - the video for which the offline playback license should be acquired.
        absoluteExpiration - defines how long the license is valid to start playback.
        playDuration - defines in milliseconds how long the content can be consumed after the start of playback.
        listener - reference to a listener that will be notified about the outcome of the request.
        config - defines additional configuration for the license request
      • requestRentalLicense

        public void requestRentalLicense​(@NonNull
                                         Video video,
                                         @NonNull
                                         java.util.Date absoluteExpiration,
                                         long playDuration,
                                         @NonNull
                                         EventListener listener,
                                         @NonNull
                                         HttpRequestConfig httpRequestConfig)
        Submits an offline playback rental license request for the specified video asynchronously. Upon successful acquisition of license, the video object will be updated to set the license key set identifier and actual expiration date.
        Parameters:
        video - the video for which the offline playback license should be acquired.
        absoluteExpiration - defines how long the license is valid to start playback.
        playDuration - defines in milliseconds how long the content can be consumed after the start of playback.
        listener - reference to a listener that will be notified about the outcome of the request.
        httpRequestConfig - Http parameters when retrieving the video. Use HttpRequestConfig.empty() instead of null.
      • requestPurchaseLicense

        public void requestPurchaseLicense​(@NonNull
                                           Video video,
                                           @NonNull
                                           EventListener listener)
        Submits an offline playback purchase license request for the specified video asynchronously. Upon successful acquisition of license, the video object will be updated to set the license key set identifier and actual expiration date.
        Parameters:
        video - the video for which the offline playback license should be acquired.
        listener - reference to a listener that will be notified about the outcome of the request.
      • requestPurchaseLicense

        public void requestPurchaseLicense​(@NonNull
                                           Video video,
                                           @NonNull
                                           EventListener listener,
                                           @NonNull
                                           CustomerRightsTokenConfig config)
        Submits an offline playback purchase license request for the specified video asynchronously. Upon successful acquisition of license, the video object will be updated to set the license key set identifier and actual expiration date.
        Parameters:
        video - the video for which the offline playback license should be acquired.
        listener - reference to a listener that will be notified about the outcome of the request.
        config - defines additional configuration for the license request
      • requestPurchaseLicense

        public void requestPurchaseLicense​(@NonNull
                                           Video video,
                                           @NonNull
                                           EventListener listener,
                                           @NonNull
                                           HttpRequestConfig httpRequestConfig)
        Submits an offline playback purchase license request for the specified video asynchronously. Upon successful acquisition of license, the video object will be update to set the license key set identifier and actual expiration date.
        Parameters:
        video - the video for which the offline playback license should be acquired.
        listener - reference to a listener that will be notified about the outcome of the request.
        httpRequestConfig - additional parameters for the license request.
      • releaseLicense

        public void releaseLicense​(@NonNull
                                   Video video,
                                   @NonNull
                                   EventListener listener)
        Submits an offline playback license release request for the specified video asynchronously. Upon successful release of license, the video object will be update to remove the license key set identifier and expiration date.
        Parameters:
        video - the video for which the offline playback license should be released.
        listener - reference to a listener that will be notified about the outcome of the request.
      • terminate

        public void terminate()
        Terminates threads created to perform asynchronous operations. After calling this method the OfflineCatalog should not be used, instead a new instance of an OfflineCatalog should be created. Calling this method will not have any effect in video downloads.