【发布时间】:2014-04-15 08:31:37
【问题描述】:
我查看了 git 上的 chromecast 示例,并查看了包含“播放或入队”行为的较旧的 v7 mediarouter examples。从 chromecast 接口中不清楚,如何将旧的辅助类型行为从“RemotePlaybackClient”及其“播放或入队”分层到遵循“典型发件人应用程序流程”mentioned here 的 chromecast 样本。
--在 chromecast 示例 onPlay 事件中观察到--
看起来好像发送者应用程序中“播放”的每个按钮事件都会抢占任何当前占用会话的视频。当前视频被中断,新视频缓冲并播放。
-- 我想要什么--
来自 RemotePlaybackClient 的旧行为,其中 chromecast 发送方应用中的“播放”事件将“playORenqueue”消息/指令传达给接收方应用。任何当前播放的视频都不会受到接收器执行的“添加到队列”指令的任何影响。
我的问题 - 如何实现“play-OR-enqueue()”,其中来自发送方应用程序的指令就像一个异步请求,要求接收方应用程序根据当前播放器发出“播放”或“入队”会话状态(是否正在播放)。是否有类似的示例代码?
--编辑-- 它看起来是可行的,如下面的细节所示,但对于旧的'RemotePlaybackClient' 与新的'RemoteMediaPlayer' 相比,我不明白一件事......
“入队”方法发生了什么?如果我想入队,这是否意味着使用 MediaRouter 而不是“chromecast”?
看起来需要进行以下操作:
Chromecast 发送者和 Chromecast 接收者
下一个要播放的项目的发件人格式消息
发送者发送消息
如果播放器忙,接收方解包消息并解释为“排队另一个媒体 URI”
接收者获取会话和播放器(我猜是 RemoteMediaPlayer)
接收者在播放器上调用“enqueue()”或等效项
示例消息:
{
"action":"launch", *** need "play or enqueue" ***
"activityType":"video_playback",
"activityId":"jsurtrdlc0hj",
"initParams": {
"videoUrl":"your_video",
"currentTime":0,
"duration":0,
"paused":false,
"muted":false,
"volume":0.5,
"mediaUrl":"your_video"
},
"senderId":"z1c1xp7jh26o",
"receiverId":"local:1",
"disconnectPolicy":"continue"
}
【问题讨论】:
-
看起来我只是通过在发送方/接收方应用程序之间发送消息来自己实现它,就像 github 上的“HelloWorld”示例一样。
标签: android video chromecast