2

我正在为 Chromecast 开发应用程序。我已经从https://github.com/googlecast/cast-android-sample尝试了 Android 示例,他工作正常 - 我可以点击 Cast 图标,选择设备并开始流式传输。所以,MediaRouter.Callback 看起来像这样:

private class MyMediaRouterCallback extends MediaRouter.Callback {
    @Override
    public void onRouteSelected(MediaRouter router, RouteInfo route) {
        MediaRouteHelper.requestCastDeviceForRoute(route);
    }
}

它有效。但我想在没有流媒体按钮的情况下在我的设备上开始流媒体。所以我将此回调更改为:

private class MyMediaRouterCallback extends MediaRouter.Callback {
    @Override
    public void  onRouteAdded (MediaRouter router, RouteInfo route)
        MediaRouteHelper.requestCastDeviceForRoute(route);
    }
}

但这不起作用。此回调触发,requestCastDeviceForRoute 使用所需设备返回 true(我通过 route.getName() 看到它),但从未调用过来自 CastSampleActivity 的 onDeviceAvailable。我尝试使用 Handler.postDelayed 延迟调用 requestCastDeviceForRoute,但仍然没有。

那么,在 MediaRouter.Callback 中检测到他之后,如何正确使用 requestCastDeviceForRoute 在没有媒体按钮的 Chromecast 设备上进行流式传输?

4

3 回答 3

3

试着打电话

mediaRouter.selectRoute(route);

而不是使用 MediaRouterHelper。从内部调用时,这对我有用onRouteAdded()

于 2013-10-15T21:23:10.213 回答
0

只是为了确保我理解您的问题,您是否尝试在系统“发现”投射设备后立即自动开始流式传输,而无需用户单击投射图标并选择设备?或者您是否尝试在用户单击投射图标并选择目标后立即开始流媒体传输(即无需单击“播放”按钮)?

于 2013-10-15T16:22:35.513 回答
0

推荐的流程是让用户手动选择设备,因此您尝试做的事情完全破坏了流程。如果网络上有多个 chromecast 设备,用户会期望发生什么?所以强烈建议不要走这条路。

于 2013-10-15T20:29:43.257 回答