MediaRouter第二次连接

时间:2014-07-24 14:20:14

标签: android chromecast presentation

我正在使用Android的MediaRouter / Presentation API(support.v7版本)。

到目前为止一切正常。唯一没有的是:

当我退出我的活动时(例如,拆除和删除回调),一切仍然正常。

然而,当开始这个活动时(之前的mediarouter-activity被强制完成,因此onPause / onDestroy被称为FOR SURE =>所以那里的那些回调也消失了,也在我的调试消息中显示)在稍后的时间点,回调被创建并添加和一切。只是,没有更多onRouteAdded调用,只有onProviderChanged(使用默认提供程序,因此无用)。

它总是像那样工作(带有wifi显示器[miracast],模拟辅助显示器,chromecast辅助显示器......)。是否有任何决议不在示例中?

您想查看一些代码吗?哪个特例? (不能发布所有内容..)

到目前为止我找不到任何东西,谢谢你的帮助,提前。

3 个答案:

答案 0 :(得分:0)

如果您更改Google Cast示例应用以支持MediaRouter.Callback: https://github.com/googlecast/CastPresentation-android

然后我每次都会调用onRouteAdded。

答案 1 :(得分:0)

使用getSelectedRoute()而不是RouteInfo(由回调提供)为我完成了这项工作。

MediaRouter.RouteInfo selectedRoute = getHelper().getMediaRouter().getSelectedRoute();
if(provider != null && getCurrentRoute() != null && getCurrentRoute().equals(selectedRoute)){
    Log.d(TAG, "only provider changes, dont do anything");
    return false;
}

if (selectedRoute != null) {
    setCurrentRoute(selectedRoute);
}

return updateContents();

这绝对是奇怪的(因为其余代码看起来与提供的谷歌android开发人员样本完全一样),但它确实有效。

答案 2 :(得分:0)

我知道这个问题已经解决了一年多,但可能它并不是一个完美的解决方案。也许它会对其他人有用。

我有完全相同症状的类似问题(没有更多onRouteAdded调用)。在我的情况下,它是由于MediaRouter的未正确实现停用造成的:要正确停用它,您不仅应该删除所有回调,还要选择默认的MediaRoute。

if (!mMediaRouter.getDefaultRoute().isSelected()) {
    mMediaRouter.getDefaultRoute().select();
}