我已经构建了一个使用Cast Companion Library(CCL)来远程播放视频以构建类似设备的应用程序。每件事都有效,但我需要能够更改视频文件,而不是杀死并重新启动活动和片段。
我已经实现了自己的自定义版本的VideoCastControllerActivity,它实现了相同的界面,但我正在重新使用CCL附带的VideoCastControllerFragment。一个问题是,当到达视频文件的末尾时,VideoCastControllerFragment并没有真正给出特别注意。它通过从IVideoCastController接口调用closeActivity()来实现,所以我尝试使用该事件来知道何时加载下一个视频文件。但是通过调用
加载下一个视频文件getCastManager().loadMedia( mSelectedMedia, autoPlay, position );
但这样做会导致另一个关闭活动和循环的调用,直到播放列表结束,而不播放任何视频。
如果不重新编写自己的VideoCastControllerFragment,还有其他方法吗?
答案 0 :(得分:1)
要回答您的第一个问题(或观察),您可以直接在VideoCastControllerActivity的实现中收听各种回调事件;您可以访问VideoCastManager,以便知道您的媒体状态何时进入IDLE,原因是FINISHED。除此之外,您似乎试图在发件人中实现某种播放列表功能,而正确的位置在接收器上(即您需要编写自定义接收器);如果您的播放列表知识/逻辑存在于您的手机上,那么整个事情就会依赖于您的手机,因此如果它进入睡眠状态,您的Chromecast就不知道该怎么做了。此外,如果第二个设备连接到同一个演员设备,它无法正确反映播放列表等。因此,电话设备可以让用户形成播放列表,然后它必须将有关该播放列表的信息发送到您的自定义接收器和您的自定义接收器应该处理在队列中播放它们并且您的发送者应该能够发送自定义消息以移动到下一个/ prev等,并且您的接收器应该相应地做正确的事情。我们的GitHub回购中有一个非常简陋的sample,它显示了如何在接收器上进行视频播放列表。