我正在使用Android的MediaRouter / Presentation API(support.v7版本)。
到目前为止一切正常。唯一没有的是:
当我退出我的活动时(例如,拆除和删除回调),一切仍然正常。
然而,当开始这个活动时(之前的mediarouter-activity被强制完成,因此onPause / onDestroy被称为FOR SURE =>所以那里的那些回调也消失了,也在我的调试消息中显示)在稍后的时间点,回调被创建并添加和一切。只是,没有更多onRouteAdded调用,只有onProviderChanged(使用默认提供程序,因此无用)。
它总是像那样工作(带有wifi显示器[miracast],模拟辅助显示器,chromecast辅助显示器......)。是否有任何决议不在示例中?
您想查看一些代码吗?哪个特例? (不能发布所有内容..)
到目前为止我找不到任何东西,谢谢你的帮助,提前。
答案 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();
}