2013-10-22 43 views
1

所以我修改了Mediarouter的源码,依赖于ActionBarSherlock而不是AppCompat。但是,现在不调用MediaRouteAdapter onDeviceAvailable(...)的回调。MediaRouter:使用ActionBarSherlock时检测Chromecast设备?

关于如何使这项工作的任何想法?

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

+0

你从哪儿拉来源为Mediarouter? – Steve

+0

https://android.googlesource.com/ – Prem

+0

谢谢。你能分享你采取的步骤以达到你现在的位置吗?我有点迷失在哪里开始,而且你似乎是唯一一个能让这两人打得好的运气。 – Steve

回答

2

我发现如何解决这个问题。

如果您使用appcompat,则只有在网络中有Chromecast设备时才会显示投射图标,具体取决于您的onDeviceAvailable(...)的实施情况。

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

所以问题是,投影图标总是可见的(当您将可见性设置为可见或将其添加到操作栏时)。

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

Mediarouter库由可绘制的png组成,这些可绘制的png是设备可用或不可用时的图标。

只需将空白资源或适合该应用的任何内容替换为“无路由可用”即可。

当设备可用时,将显示正确的投射图标,当不可用时,您的自定义资源将显示(如果资源为空白视图,则为空白)。

下面是关于如何获得mediarouter源代码的全部细节,以及如何解决这一问题:http://www.droidorbit.com/2013/10/mediarouter-and-actionbarsherlock.html

+0

我遵循了上面建议的链接。但是我得到了错误: MediaRouterJellybean,MediaRouterJellybeanMr1无法解析为SystemMediaRouteProvider.java文件中的类型。 而R.attr.isLightTheme无法解析或不是MediaRouterThemeHelper.java文件中的字段。 当前我评论这些代码的错误免费,然后集成铸造示例与ABS和在ActionBar中显示投射图标。 但我得到了错误:java.lang.ClassCastException:android.support.v7.app.MediaRouteActionProvider无法转换为com.actionbarsherlock.view.ActionProvider。 请帮我解决它。谢谢 –

+0

你可以给你修改的MediaRouter源代码吗?我的电子邮件是[email protected]。在此先感谢 –

+0

发送给您的电子邮件Huy Dong Tu – Prem