使用 CastCompanionLibrary 仅投射音频?

Posted

技术标签:

【中文标题】使用 CastCompanionLibrary 仅投射音频?【英文标题】:Using the CastCompanionLibrary to cast audio only? 【发布时间】:2014-05-22 02:07:04 【问题描述】:

通过查看来自 Google Cast 的示例、库、源代码等,我可以说整个 Cast SDK 相对复杂,对开发人员几乎没有抽象。

我认为这就是 Google 创建 CastCompanionLibrary 的原因……

但是,通过阅读 .pdf、源代码和示例,我仍然不清楚仅投射音频的正确方法是什么。

另一方面,android-Studio 尚未更新“democastplayer”。

我已将此应用转换为 Android Studio,并且可以使用我自己的应用 ID,但我仍有两个基本问题:

1) Cast SDK Mode和MediaRouter Mode有什么区别? (即使查看源代码,我也无法找到其中一个的区别或优势,或者更具体地说,何时使用它们以及为什么使用它们?)

2) 如果您已经有一个使用标准 MediaPlayer 完成所有您需要的服务(因为您已经有一个流式传输音乐的应用程序),您已经缓冲(异步!)并在播放器准备好时播放,您也有栏中的通知,换句话说,您有一个媒体播放器应用程序……您将如何添加 Chromecast 支持?

CastCompanionLibrary 似乎相对臃肿,包含不需要的功能(我不需要的玩家活动/片段,因为我已经拥有一个)、我的应用程序中已经拥有的通知支持……等等。

我是否应该在我的应用程序中有一个 Chromecast 独有的“第二个”播放器/服务来处理它,从而处理所有通知、RemoteMediaPlayer(而不是我的常规 MediaPlayer)等?

播放结束后这个播放器会给我一个回调吗?暂停? (这样我就可以更新我的 UI、进行 API 调用等)

我是 Google Cast 的新手,所以如果有什么容易看到的地方,请提前向我道歉,请指出正确的资源(我已阅读示例和代码,但没有遇到这些简单的答案)。我对视频完全不感兴趣。

我的音乐来自一个 API(我必须请求一首曲目,然后我将获得一个指向媒体 -mp3 或类似内容的 URL)。我还必须知道轨道何时到达某个点。我在RemoteMediaPlayer 中没有看到任何类似于真正的 MediaPlayer 的东西,这些回调对我来说似乎不完整。

我在这里缺少什么? :)

谢谢。

【问题讨论】:

【参考方案1】:

你有不同的选择:

您可以使用 CastCompanionLibrary 和子类 DataCastManager 添加您想要的片段。那(以及下面的下一个选项)将处理连接问题等。 您可以使用 CastCompanionLibrary 和 VideoCastManager。如果您不需要通知,则不必使用它;除非您启用它,否则该功能不会出现。我没有将那门课只用于音乐,但我看不到任何重大问题。优点是它为您提供了一组回调来通知您音乐播放的状态,并提供大量 API 来轻松完成其他事情。 您可以从头开始编写自己的代码;您可以注册媒体状态更新回调,并在音乐停止、缓冲等时收到通知。这不是一项艰巨的任务,查看样本会告诉您需要做什么;实际上,就 SDK 而言,处理视频或音乐之间几乎没有区别。

【讨论】:

感谢您的及时回复。让我看看能不能找到更具体的问题。你知道Cast SDK Mode和MediaRouter Mode有什么区别吗? Cast SDK 模式使用 CastSDK,但 MediaRouter 模式根本不使用 Cast SDK,完全依赖媒体路由器。两者都使用相同的发现机制(基于媒体路由器),但控制命令完全不同。

以上是关于使用 CastCompanionLibrary 仅投射音频?的主要内容,如果未能解决你的问题,请参考以下文章

使用 CastCompanionLibrary 将“播放列表”推送到 Chromecast

使用适用于 Android 的 CastCompanionLibrary 扫描设备

CastCompanionLibrary : mApiClient 或 mRemoteMediaPlayer 为空

R 无法解析为 Eclipse 中 CastCompanionLibrary 上的变量

mediaroutebutton CastCompanionLibrary 上的连接动画

Google CastCompanionLibrary 许可证?