Android 应用在没有用户交互的情况下自动投射 (CastCompanionLibrary)

Android app automatically casting without user interaction (CastCompanionLibrary)

我有一个使用 CastCompanionLibrary v2.9.1 的 Android 应用程序,修改为使用 play-services-cast:10.0.1(只是对 gradle 依赖项的简单更改)。

简短版本:该应用正在尝试自动连接到 ChromeCast 设备,无需用户交互。

长版:

自从更新 CCL 库以使用 play services 10.0.1 以来,我有几个用户提到该应用程序会自动 connecting/casting 到 ChromeCast,无需用户交互。

一些用户表示他们没有使用该应用程序,然后他们连接到 WiFi,该应用程序会自动尝试投射。其他人说他们正在使用该应用程序,他们没有按 ChromeCast 按钮,该应用程序开始投射。

--

我无法弄清楚在哪里可以找到 ChromeCast API 的潜在变化,这些变化可能会解释正在发生的事情。我也不确定这个问题是只出现在我的应用程序上,还是出现在许多其他支持 ChromeCast 的应用程序上。最后,我无法在自己的 ChromeCast 设备上重现此问题。

如有任何帮助,我们将不胜感激。

我以前从未见过或听说过这种情况,因此这里有一些建议供您进一步调查,看看可能是什么原因。 CCL 有一个名为 ReconnectionService 的(粘性)服务,负责在您失去 wifi 并稍后恢复时执行重新连接尝试。您提到的 wifi 场景与此类似,所以我建议从那里开始。为了仅在有意义时重新连接,它获取正在播放的内容的时间长度,并且仅在该时间段内进行此类尝试;即,如果您开始播放 1 小时的内容,然后将 phone 留在 table 上并在 2 小时后拿起它,它会注意到在它入睡前的最后一部电影是 1 hr 所以它不会尝试重新连接(请参阅 class 中的 handleTermination())。对于没有明确内容持续时间的 live-stream,CCL 使用默认的 2 小时,但允许应用程序通过调用 VideoCastManager.setLiveStreamDuration(duration_in_seconds) 方法来修改它。最后,整个重新连接依赖于几个因素:它保存最后一次连接的 route-id 以及会话 ID。因此,如果需要,您可以清除其中任何一个,然后它不会尝试为该特定会话重新连接(以防您希望为某些会话保持重新连接并禁用其他会话)。希望这些有助于解决问题。

原来 Android 支持库 25.1.0 中有一个错误导致了这个问题。

https://code.google.com/p/google-cast-sdk/issues/detail?id=1105

现在标记为 'fixed internally'。

还相关: https://code.google.com/p/android/issues/detail?id=232326