Listing the list subtitles
@OptIn(UnstableApi::class)
fun listAvailableSubtitleLanguages(): List<String> {
val controller = _controllerState.value ?: return emptyList()
return controller.currentTracks.groups
.filter { it.type == C.TRACK_TYPE_TEXT }
.flatMap { group ->
(0 until group.length)
.mapNotNull { index ->
group.getTrackFormat(index).language
}
}.distinct()
}
- This
listAvailableSubtitleLanguages()
iterates over the media for all the languages available for subtitle tracks.
- For example, if a video has English, Spanish, and French subtitles, this function would return a list like ["en", "es", "fr"]
Applying language selection for the subtitle
fun onSubtitleLanguageSelected(language: String) {
_controllerState.value?.let { controller ->
captionsEnabled = true
controller.trackSelectionParameters = controller.trackSelectionParameters
.buildUpon()
.setPreferredTextLanguage(language)
.setTrackTypeDisabled(C.TRACK_TYPE_TEXT, false)
.build()
}
}