投伴库换视频不用重启activity?

Cast companion library change video without restarting activity?

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

我已经实现了我自己的自定义版本的 VideoCastControllerActivity,它实现了相同的接口,但我正在重新使用 CCL 附带的 VideoCastControllerFragment。一个问题是当到达视频文件的末尾时,VideoCastControllerFragment 并没有真正发出具体的通知。它通过从 IVideoCastController 接口调用 closeActivity() 来实现,因此我尝试使用该事件来了解何时加载下一个视频文件。但是通过调用

加载下一个视频文件
getCastManager().loadMedia( mSelectedMedia, autoPlay, position ); 

但这样做会导致另一个调用关闭 activity 和一个循环,直到到达播放列表的末尾而不播放任何视频。

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

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