【发布时间】:2014-04-03 22:51:30
【问题描述】:
我之前使用预览版 SDK 开发了一个 android sender 应用,发现当打开或关闭 Chromecast 时,该应用很快发现了这一点并更改了媒体路由按钮的状态。
但是,对于新的 SDK,如果 Chromecast 在应用未连接到它的情况下被拔出,则永远不会调用 MediaRouter.Callback.onRouteUnselected() 并且 Cast 图标仍然可见。在某些情况下,即使应用程序关闭并再次打开,onRouteAdded 也会在启动时调用之前连接的 Chromecast 的详细信息,即使它不再插入,因此不在网络上,这表明某处存在某种缓存.
我在我自己的应用程序(使用配套库)和 github 上的示例 CastVideos-android 应用程序中都注意到了这一点。这会像这样设置回调:
mMediaRouter = MediaRouter.getInstance(context);
mMediaRouteSelector = new MediaRouteSelector.Builder().addControlCategory(
CastMediaControlIntent.categoryForCast(mApplicationId)).build();
mMediaRouterCallback = new CastMediaRouterCallback(this, context);
mMediaRouter.addCallback(mMediaRouteSelector, mMediaRouterCallback,
MediaRouter.CALLBACK_FLAG_PERFORM_ACTIVE_SCAN);
这会导致非常粗糙的用户体验 - 有什么方法可以改进它吗?也许我可以传递的某些标志将执行比 CALLBACK_FLAG_PERFORM_ACTIVE_SCAN 更主动的扫描,从而检测到不再在网络上的 Chromecast?或者也许我可以每隔一段时间再次扫描并确保 chromecast 仍然存在的某种方法?我查看了 API,但什么都看不到。
编辑:更糟糕的是,我还注意到,如果 Chromecast 被拔掉然后你尝试投射到它,它会断开连接(很好)但在重新插入时不会检测到 Chromecast。即使是这样如果您退出应用程序并重新启动它。
【问题讨论】:
-
您是否希望很多用户拔掉自己的 Chromecast,然后故意尝试投射到它,然后不知道为什么它不起作用?
-
在切换到电视上的 Chromecast 频道之前,有人先拔掉电源线然后尝试开始投射,这并非不可想象。另一个问题是,它会制作现场演示,您既要演示 chromecast 应用程序,又要实际拔下东西并将其传递给真正令人伤脑筋的东西。
-
此外,如果我不小心将 chromecast 的电源线从我的 chromecast 中撞了出来,并且看不到图片,但仍然可以看到发件人应用程序上的投射按钮,我会假设 chromecast 仍处于打开状态,但HDMI 连接有问题。最终我会弄明白的,但不是很好。
标签: android google-cast chromecast