如何在 CastSDK v3 中自定义 ExpandedControllerActivity

Posted

技术标签:

【中文标题】如何在 CastSDK v3 中自定义 ExpandedControllerActivity【英文标题】:How to customize ExpandedControllerActivity in CastSDK v3 【发布时间】:2016-11-09 13:01:50 【问题描述】:

我想使用我们自己的 UI 在 CastSDK v3 中自定义 ExpandedControllerActivity。但现在是不允许的。有什么办法吗?

【问题讨论】:

不幸的是,没有办法或解决方法来做到这一点。在网上查了一下,任何教程和谷歌文档都只是展示了如何实现或调用ExtendedControllerActivity,而不是如何在ExtendedControllerActivity 中自定义 UI。您可以尝试按照这些教程来实现ExtendedControllerActivity-Google Cast v3 and Media 和Expanded Controller。希望这会有所帮助。 【参考方案1】:

目前,自定义仅限于选择该活动上存在的控制按钮。但是,我们正在积极考虑扩展它以添加更多功能;敬请期待。

【讨论】:

2年后,有什么消息吗?【参考方案2】:

如果您想自定义此活动,这将是很多工作,但这是可能的。您可以使用所需的视图创建自己的布局文件,然后使用 UIMediaController 将每个视图绑定到演员会话中存在的信息。

这个 UIController 有很多可能的绑定,所以我建议你尝试一些,直到找到你感兴趣的那个,这里有一些例子:

val uiController = UIMediaController(this)
uiController.bindSeekBar(castSeekBar, 1000L) // Binding a CastSeekBar to video progress
uiController.bindTextViewToStreamPosition(castPositionTextView, true) // Binding a TextView to video current position
uiController.bindTextViewToStreamDuration(castDurationTextView) // Binding a TextView to video duration

某些信息,尤其是元数据字段可以使用 MediaMetadata 中的键访问,例如标题或副标题:

uiController.bindTextViewToMetadataOfCurrentItem(castTitleTextView, MediaMetadata.KEY_TITLE)
uiController.bindTextViewToMetadataOfCurrentItem(castSubtitleTextView, MediaMetadata.KEY_SUBTITLE)

在该活动中,您也可以通过这种方式直接访问您的视频:

val sessionManager = CastContext.getSharedInstance(this).sessionManager
val remoteMediaClient = sessionManager.currentCastSession?.remoteMediaClient
val mediaInfo = remoteMediaClient?.mediaInfo

在这里,mediaInfo 将包含很多信息,例如持续时间、元数据、contentId...

我知道这不是很精确,但我希望能有所帮助:-)

【讨论】:

以上是关于如何在 CastSDK v3 中自定义 ExpandedControllerActivity的主要内容,如果未能解决你的问题,请参考以下文章

如何在 BlackBerry 中自定义 ListField?

如何在Android中自定义动画

如何在 Qt 中自定义列表视图

如何在 JavaScript 中自定义警报?

如何在 Flutter 中自定义 Slider 小部件?

如何在BlackBerry中自定义ListField?