Android 以编程方式选择Chromecast介质路由

Android 以编程方式选择Chromecast介质路由,android,chromecast,Android,Chromecast,我想自动启动chromecast路由,而不是在用户按下按钮时启动。有人知道我如何以任何方式模拟用户按下媒体路由按钮吗?我浏览了不同的课程,没有发现任何东西 我知道这不是谷歌打算开发人员使用它的方式,我的应用程序只是作为概念证明 如果有人知道实现相同目标的其他方法(应用程序启动时,如果用户已在“选项”菜单中启用了该功能,则开始播放)-请告诉我 您可以像往常一样执行相同的步骤(获取MediaRouter实例、设置选择器、注册回调等),但是您需要在应用程序中保留已发现路由的列表(正如MediaRout

我想自动启动chromecast路由,而不是在用户按下按钮时启动。有人知道我如何以任何方式模拟用户按下媒体路由按钮吗?我浏览了不同的课程,没有发现任何东西

我知道这不是谷歌打算开发人员使用它的方式,我的应用程序只是作为概念证明


如果有人知道实现相同目标的其他方法(应用程序启动时,如果用户已在“选项”菜单中启用了该功能,则开始播放)-请告诉我

您可以像往常一样执行相同的步骤(获取MediaRouter实例、设置选择器、注册回调等),但是您需要在应用程序中保留已发现路由的列表(正如MediaRouter发现的那样;您将通过onRouteAdded(())获得回拨。您还需要进行簿记(通过onRouteRemoved()回调)。现在您已经有了一个路由列表,您可以通过编程确定要使用的路由,然后再次像往常一样执行(与通过onRouteSelected()获得回调时执行的操作相同),只是需要调用MediaRouter。selectRoute(您选择的路由)您可以自己告诉框架。对于第一部分,您可以看一看。

因此,我发现在程序开始时我无法检查路由,因为MediaRouter尚未发现它们。(即,对getRoutes的调用仅返回默认路由…)在我的程序中,启动一个休眠3秒钟的线程,然后调用并选择任何可用的路由就足够了:

if(mMediaRouter.getRoutes().size() >= 1) {
   mMediaRouter.selectRoute(mMediaRouter.getRoutes().get(1));
}

如果我需要一个更持久的解决方案,我会按照Ali Naddaf的建议去做。

默认路由将是路由列表中的第一个路由。因此,您需要将
get(1)
替换为
get(0)
。如果您使用
MediaRouter.getRoutes
,您不需要做所有的簿记工作。