Android MediaRouter:使用ActionBarSherlock时检测chromecast设备?

Android MediaRouter:使用ActionBarSherlock时检测chromecast设备?,android,actionbarsherlock,google-cast,chromecast,Android,Actionbarsherlock,Google Cast,Chromecast,因此,我将Mediarouter源代码修改为依赖ActionBarSherlock而不是AppCompat。但是,现在没有调用来自MediaRouteAdapteronDeviceAvailable(…)的回调 你有什么办法让它发挥作用吗 我不想让cast按钮始终可见。相反,我想使用onDeviceAvailable(..)只在设备可用时才使其可见。我发现了一个解决方法 如果您使用appcompat,则仅当您的网络中有chromecast设备时,根据您的onDeviceAvailable(…)实

因此,我将Mediarouter源代码修改为依赖ActionBarSherlock而不是AppCompat。但是,现在没有调用来自MediaRouteAdapter
onDeviceAvailable(…)
的回调

你有什么办法让它发挥作用吗


我不想让cast按钮始终可见。相反,我想使用onDeviceAvailable(..)只在设备可用时才使其可见。

我发现了一个解决方法

如果您使用appcompat,则仅当您的网络中有chromecast设备时,根据您的
onDeviceAvailable(…)
实现,才能看到强制转换图标

但是,如果使用ABS,当chromecast设备在网络上可用时,不会调用onDeviceAvailable(…)方法。因此,为了看到演员图标,我们必须将其设置为始终可见

因此,问题是演员阵容图标始终可见(当您将“可见性”设置为“可见”或将其添加到操作栏时)

但是: MediaRouter具有不同的视图状态。一个用于播放设备可用时,另一个用于没有可用设备时

Mediarouter库由可绘制的PNG组成,这些PNG是设备可用与否的图标

只需用空白资源或任何适合应用程序的资源替换“没有可用路线”的资源

设备可用时,将显示正确的强制转换图标,不可用时,将显示自定义资源(如果资源为空视图,则为空)


以下是有关如何获取mediarouter源代码以及如何修复此问题的完整详细信息:

您从何处获取mediarouter的源代码?谢谢。你能分享一下你为达到现在的水平所采取的步骤吗?我有点不知道从哪里开始,而你似乎是唯一一个有幸让这两个人玩得很好的人。我保存了mediaRouter文件夹,并将其作为子模块添加到我的项目中。我添加了ActionBarSherlock作为mediaRouter的依赖项,以及v4 android支持库的最新版本。现在,当您尝试编译时,您可能会发现一些(3-5)错误,从对AppCompat资源的引用。基本上将这些资源重命名为ABS资源。对于大多数人来说,用“夏洛克”替换名称中的“AppCompat”就行了。谢谢。什么是mediaRouter文件夹?我在frameworks/support/v7/mediawrouter下没有看到任何代码。我遵循了您上面建议的链接。但我得到了错误:MediaRouterJellybean、MediaRouterJellybeanMr1无法解析为SystemMediaRouteProvider.java文件中的类型。和R.attr.isLightTheme无法解析或不是MediaRouterThemeHelper.java文件中的字段。目前,我对这些代码进行了无错误的注释,然后将Cast示例与ABS集成,并在ActionBar中显示Cast图标。但是我得到了错误:java.lang.ClassCastException:android.support.v7.app.MediaRouteActionProvider无法强制转换为com.actionbarsherlock.view.ActionProvider。请帮我解决它。谢谢你能提供你修改过的MediaRouter源代码吗?我的电子邮件是duongtuhuybk@gmail.com. 提前感谢发送给您的电子邮件Huy DongTu@Prem多亏了你的博客,我成功地实现了MediaRouter!谢谢唯一的一点是,对我来说,它工作正常,没有任何问题,ChromeCast图标会自动出现/消失,这取决于ChromeCast是否打开。我使用了这个问题的答案,现在我的onDeviceAvailable也被称为。我想你可能会感兴趣。。。此外,我的图标是一个菜单项,如本文所述,此解决方案不再有效,
MediaRouteAdapter
已从API中删除。我也有同样的问题,如果网络中没有播放设备,我想隐藏图标。有什么办法吗?