Customizing Notifications for Downloading Offline DRM on Android
Text Resources Customization
To customize the text or add translations to the notifications, you can override the following string resources:
- 
<string name="theo_download_progress_title">Downloading video</string>- This resource represents the title displayed during the progress of video downloading.
 
- 
<string name="theo_download_status_title">Download %s</string>- This resource represents the title displayed during the download process. The %splaceholder will be replaced with the actual file name.
 
- This resource represents the title displayed during the download process. The 
- 
<string name="theo_download_status_percentage">%d%%</string>- This resource represents the percentage of download progress displayed in the notification. The %dplaceholder will be replaced with the actual progress value.
 
- This resource represents the percentage of download progress displayed in the notification. The 
- 
<string name="theo_download_finished_status_title">Download finished</string>- This resource represents the title displayed when the download is completed successfully.
 
- 
<string name="theo_download_paused_status_title">Download paused</string>- This resource represents the title displayed when the download is paused.
 
- 
<string name="theo_download_failed_status_title">Download failed</string>- This resource represents the title displayed when the download fails.
 
- 
<string name="theo_download_stopped_status_title">Download stopped</string>- This resource represents the title displayed when the download is manually stopped.
 
- 
<string name="theo_cache_notifications_channel_name">Media downloader</string>- This resource represents the name of the notification channel used for media downloading.
 
- 
<string name="theo_cache_notifications_channel_description">Downloads media to make it available for offline playback</string>- This resource represents the description of the notification channel used for media downloading.
 
To customize these texts or add translations, create corresponding string resources in your app's resource file (e.g., strings.xml) and provide the desired values.
By overriding these resources, you can tailor the text content of the notifications to match your application's branding or localize them for different languages or regions.
Customization of Notification Builders
The CacheNotificationsBuilder interface provides the ability to create customized notification appearances using the NotificationCompat.Builder. This feature allows you to design notifications according to your specific preferences and requirements.
The CacheNotificationsBuilder interface includes three methods:
- 
createProgressNotificationBuilder: This method allows you to customize thebuilderparameter and create a custom progress notification builder for a specific caching task. It takes thetaskparameter, which represents the caching task for which the progress notification is being created, and thebuilderparameter, which is the base notification builder to customize. It returns the customized notification builder for the progress notification.
- 
createStatusNotificationBuilder: In this method, you have the ability to customize thebuilderparameter and create a custom status notification builder for a given caching task. It takes thetaskparameter, which represents the caching task for which the status notification is being created, and thebuilderparameter, which is the base notification builder to customize. It returns the customized notification builder for the status notification.
- 
createNotificationChannel: This method enables you to customize thechannelparameter and create a custom notification channel for caching notifications. It takes thechannelparameter, which is the base notification channel builder to customize. It returns the customized notification channel builder.Note: If you decide to return nullin thecreateNotificationChannelmethod, the library will not create any notification channel. This means that notifications related to caching will not have a designated channel for grouping or presentation.
These methods allow you to customize the appearance and behavior of notifications and notification channels according to your specific requirements when downloading media files using cache in THEOplayer.
To implement this interface, follow these steps:
- 
Obtain an instance of THEOplayer cache by calling THEOplayerGlobal.getSharedInstance(this).cache.
- 
Assign an object that implements the CacheNotificationsBuilder interface to theoCache.notificationBuilder.Example: val theoCache = THEOplayerGlobal.getSharedInstance(this).cache
 theoCache.notificationBuilder = object : CacheNotificationsBuilder {
 override fun createNotificationChannel(channel: NotificationChannelCompat.Builder): NotificationChannelCompat.Builder {
 // Customization logic for the notification channel
 ...
 return channel
 }
 override fun createProgressNotificationBuilder(task: CachingTask, builder: NotificationCompat.Builder): NotificationCompat.Builder {
 // Customization logic for the progress notification builder
 ...
 return builder
 }
 override fun createStatusNotificationBuilder(task: CachingTask, builder: NotificationCompat.Builder): NotificationCompat.Builder {
 // Customization logic for the status notification builder
 ...
 return builder
 }
 }
In the createProgressNotificationBuilder and createStatusNotificationBuilder methods, you can refer to the official NotificationCompat.Builder documentation for detailed information on how to customize the notification appearance, add actions, and handle interactions.
Inside the implementation of each method, you can customize the respective notification channel or builder according to your requirements. Make sure to return the modified notification channel or builder as per the method's return type.
By completing these steps, you will set up the implementation of the CacheNotificationsBuilder interface, allowing you to customize the appearance and behavior of notifications in THEOplayer cache.
Hiding notifications
To hide a notification, you can simply return null in the corresponding method of the CacheNotificationsBuilder interface.
For example, if you want to hide the progress notification or status notification for a specific caching task, you can return null in the createProgressNotificationBuilder or createStatusNotificationBuilder method, respectively. This will prevent the notification from being shown.
Please note that when you return null in the createProgressNotificationBuilder or createStatusNotificationBuilder methods to hide the notification, the downloading process will not be performed using a foreground service.
Ensure that you consider the implications of hiding notifications and not using a foreground service for downloading media files. It is recommended to provide alternative ways to inform the user about the download progress or completion if you choose to hide notifications.