在非投射设备上使用投射功能

Use cast features with non-cast devices

我有一个不是投射设备的远程播放设备(暂且称他为 Johnny 5)。

我希望能够从客户端应用程序将内容投射到 Chromecast 或我的 Johnny 5 设备。该应用程序基于 Cast SDK v3.

为了集成我的非广播设备,我构建了一个 Media Router Provider 并扩展了 Session & SessionProvider classes. The Session Provider is added in the getAdditionalSessionProviders method of my OptionsProvider class。

我设法让一切正常:我的设备出现在检测到的带有 Chromecast 的设备列表中(感谢 MediaRouterProvider),当我 select 它时,会话开始,然后我可以在上面投射内容。

但是,RemoteMediaClient 对象似乎是 Google-cast 特定的(不能用于非 cast 设备),就像许多 Cast SDK 功能(迷你控制器、扩展控制器...).

这里的问题是关于投射对话框、远程控制通知和锁定屏幕:我的非投射设备可以使用这些吗?或者我是否必须将所有代码编写成 'mimic' Cast SDK 功能?

关于投射对话框,我希望能够对其进行自定义以使其具有与 Chromecast 相同的行为,而无需编写我自己的设备选择器或覆盖默认按钮行为。

大部分工作都由您完成,为非投射设备编写大部分内容。正如您所注意到的,Cast API 不会与不是 CastSession 的会话交互。因此,您的选择是编写一个接口,该接口已由 Cast SDK 为投射设备实现,并由您为非投射设备实现,并尝试尽可能多地使用该通用接口。获取锁屏之类的东西相当于创建一个 MediaStyle 通知; CastSdk 会处理涉及 CastSession 的情况,而当涉及不同类型的 Session 时您需要创建类似的通知。对于 Cast SDK 开箱即用的几乎所有 UI 元素都是如此。