使用Chromecast SDK来确定android接收器上是否启用了隐藏字幕



我希望能够确定我的接收器(CAF接收器(是否显示了字幕。这样,我就可以依靠接收者告诉发送者字幕已启用,而不是保存发送者上隐藏字幕的先前状态。有没有使用remoteMediaClient的方法或方法?

我不确定你是指发送者还是接收者,但我会给你两个:(

有可能在安卓系统上获得这样的

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接收器(TextTracksManager(上

cast.framework.CastReceiverContext.getInstance().getTextTracksManager().getActiveTracks()

编辑可以看出,当我从IDE中复制代码时,我混淆了这两个函数。有活动ID和所有媒体曲目(包括音频、视频和文本(。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
}

最新更新