恢复chromecast连接失败:取消选择当前路由,因为它不再可选

时间:2014-08-09 11:56:29

标签: android chromecast

我正在开发支持Chromecast的Android应用。

尝试重新连接时,在回调中:

public void onRouteAdded(final MediaRouter router, final MediaRouter.RouteInfo route)

我检查routeId是否是我连接的那个,在这种情况下我选择它调用:

mRouter.selectRoute(newRoute)

我的onRouteSelected回调会被触发,但在此之后会调用onRouteUnselected。所有手机都不会发生这种情况。

跟踪发生的事情我发现selectRoute的实现结束了向Handler发送“未选择路由”消息。传递的路由是默认路由,因此在我尝试选择新路由时选择了路由。我在onRouteUnselected收到的路线是新路线,而不是刚刚选择的路线。

有没有人见过这个问题?

被修改 在日志中,我看到“取消选择当前路线,因为它不再可选”

根据this issue中建议的解决方案,我安装了新版Google Play服务。我还在使用jdk 1.6。现在的问题是我使用ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED获得onConnectionFailed。 要修复此问题,我必须强制gradle使用版本5.0.89,这是手机上安装的版本。完成此操作后,应用程序再次在手机上运行,​​但重新连接仍然失败

Edited2 请注意,您需要在“ChromecastManager”类中为路由器对象提供强引用(mRouter),您应该使用该引用来选择路由。您还应该在mRouter.getRoutes()中查看newRoute.getId() == oldRoute.getId()的路线。因此,您无法调用mRouter.selectRoute(route),其中route是传递给onRouteAdded

的对象

1 个答案:

答案 0 :(得分:0)

现在看来它正在运作。我唯一做的就是异步执行router.selectRoute而不是onRouteAdded。所以我在Handler中执行选择。

因此,无需更新Google服务。如果您像我一样更新Google服务,则无需使用JDK 1.7。我不知道为什么会收到警告

  

“警告:com / google / android / gms / common / api / PendingResult.class(com / google / android / gms / com mon / api:PendingResult.class):主要版本51比50更新,此编译器支持的最高主要版本。建议升级编译器。“

即使openjdk-6-jdk已经是最新版本。