我正在开发支持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
答案 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
已经是最新版本。