Chromecast发件人应用程序不会检测断开连接/重新连接

时间:2014-03-03 02:02:21

标签: android google-cast chromecast

我之前使用预览SDK开发了一个Android发送器应用程序,发现当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。这甚至都是真的。如果你离开应用程序并再次启动它。

1 个答案:

答案 0 :(得分:5)

您概述的行为是由SDK中的错误导致的,该错误将在下一版Google Play服务中解决。