Я не уверен, если вы имеете в виду отправителя или получателя, но я дам вам и то, и другое:)
Возможно получить его на Android примерно так:
private val SUB_TITLE_TYPES = intArrayOf(MediaTrack.SUBTYPE_SUBTITLES, MediaTrack.SUBTYPE_CAPTIONS)
fun getActiveMediaTracks(context: Context): LongArray =
getRemoteMediaClient(context)?.mediaStatus?.activeTrackIds ?: longArrayOf()
fun getSubtitleTracks(context: Context): List<MediaTrack> =
getActiveMediaTracks(context).filter {
it.type == MediaTrack.TYPE_TEXT && it.subtype in SUB_TITLE_TYPES
}
илив Chromecast Receiver ( TextTracksManager )
cast.framework.CastReceiverContext.getInstance().getTextTracksManager().getActiveTracks()
EDIT : Можно увидеть, что я перепутал две функции, когда скопировал код из нашей IDE,Существуют активные идентификаторы и все медиа-треки (включая аудио, видео, тексты). Может быть разница между MediaTrack.SUBTYPE_SUBTITLES*
, думаю, это зависит от потока.
Вот как найти активные текстовые дорожки
val remoteMediaClient = CastContext.getSharedInstance(context).sessionManager?.currentCastSession?.remoteMediaClient
remoteMediaClient?.mediaInfo?.mediaTracks?.filter {
it.type == MediaTrack.TYPE_TEXT && it.subtype in SUB_TITLE_TYPES
}?.let {
textTracks ->
val activeTrackIds = remoteMediaClient.mediaStatus?.activeTrackIds?.filter { activeTrackId ->
textTracks.none { track -> track.id == activeTrackId }
}.toLongArray()
activeTrackIds.size > 0
}