【问题标题】:Cast companion library change video without restarting activity?在不重新启动活动的情况下投射伴侣库更改视频?
【发布时间】:2015-03-25 03:25:08
【问题描述】:

我构建了一个应用程序,它使用 Cast Companion Library (CCL) 远程播放视频以投射类似的设备。一切正常,但我需要能够更改视频文件,而不是杀死并重新启动活动和片段。

我已经实现了我自己的 VideoCastControllerActivity 自定义版本,它实现了相同的接口,但我正在重新使用 CCL 附带的 VideoCastControllerFragment。一个问题是 VideoCastControllerFragment 在到达视频文件末尾时并没有真正给出具体通知。通过从 IVideoCastController 接口调用 closeActivity() 在某种程度上可以做到这一点,所以我尝试使用该事件来知道何时加载下一个视频文件。但是通过调用加载下一个视频文件

getCastManager().loadMedia( mSelectedMedia, autoPlay, position ); 

但这样做会导致再次调用关闭活动并循环直到到达播放列表的末尾而不播放任何视频。

是否有另一种方法可以在不重写我自己的 VideoCastControllerFragment 的情况下解决这个问题?

【问题讨论】:

    标签: android video chromecast google-cast


    【解决方案1】:

    要回答您的第一个问题(或观察),您可以在 VideoCastControllerActivity 的实现中直接监听各种回调事件;您可以访问 VideoCastManager,这样您就可以知道您的媒体状态何时以 FINISHED 为由变为 IDLE。除此之外,您似乎正在尝试在发送者中实现某种播放列表功能,而正确的位置在接收者上(即您需要编写自定义接收者);如果您的播放列表知识/逻辑存在于您的手机上,那么整个事情就取决于您的手机,所以如果它进入睡眠状态,您的 chromecast 不知道该怎么做。此外,如果第二台设备连接到同一个播放设备,它就无法正确反映播放列表等。因此,手机设备可以让用户形成播放列表,然后必须将有关该播放列表的信息发送到您的自定义接收器和您的自定义接收器应该处理在队列中播放它们,并且您的发件人应该能够发送自定义消息以移动到下一个/上一个等,并且您的接收器应该相应地做正确的事情。我们的 GitHub 存储库中有一个非常基本的 sample,它展示了如何在接收器上制作视频播放列表。

    【讨论】:

    • 我认为从长远来看,做播放列表以及我们需要接收器端的一些其他功能会很好,这样可以减少对正在投射的设备的依赖。我知道睡眠问题(当然我可以通过监听事件并处理它们的服务来解决这个问题)。是否无法开始播放来自发件人的下一个视频?感谢您的意见。
    • 另外,您是否会说,对于比播放单个视频更复杂的事情,我是否应该不使用 CCL 而仅使用 CCL 作为参考?它开始感觉 CCL 非常适合演员的简单用例,但对于更复杂的用例,我开始觉得我经常尝试解决它。​​
    • CCL作为一个库,不能在Android发送端或接收端包含当前SDK不支持的任何API;例如,如果接收方当前没有 API 来处理播放列表,那么 CCL 添加自己的 api 是没有意义的,因为接收方没有标准 api 来处理这些 api 调用并且 CCL 不会提供一个接收器。
    • 既然我已经开始使用 CCL,我是否可以继续使用 CCL 以及您链接到的支持播放列表的自定义接收器示例?
    猜你喜欢
    • 1970-01-01
    • 2020-12-23
    • 2011-11-11
    • 2014-10-18
    • 1970-01-01
    • 1970-01-01
    • 2011-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多