首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CastCompanionLibrary在网络上检测Chromecast设备的存在

CastCompanionLibrary在网络上检测Chromecast设备的存在
EN

Stack Overflow用户
提问于 2015-04-22 21:29:22
回答 2查看 486关注 0票数 0

当启动具有根据MediaRouteButton文档实现的CastCompanionLibrary的活动时,即使网络中有Chromecast设备,按钮也不会显示。(注意这里的MediaRouteButton不在ActionBar中;我们在这里讨论的活动实际上没有ActionBar,但它扩展了ActionBarActivity。我们应用程序中的其他活动根据文档将Cast按钮实现到Action中,当网络中有Chromecast设备时,该按钮的行为是正确的。)

我们观察到onCastAvailabilityChanged (以及onCastDeviceDetected)在VideoCastConsumer中没有被调用。我们跟踪了代码,发现活动开始时没有调用/cast/CastMediaRouterCallback.java中的onRouteAdded。

在我们的活动中,我们在onResume中创建了使用者

代码语言:javascript
复制
@Override
    protected void onResume() {
        mCastManager = VideoCastManager.getInstance();
        if (mCastManager != null) {
            mVideoCastConsumer = new VideoCastConsumerImpl() {
                .....
                @Override
                public void onCastAvailabilityChanged(boolean castPresent) {
                    mMediaRouteButton.setVisibility(castPresent ? View.VISIBLE : View.GONE);
                }
                .....
            }
            mCastManager.incrementUiCounter();
            mCastManager.addVideoCastConsumer(mVideoCastConsumer);
        }
    …..

并执行decrementUiCounter并从onPause中的管理器中删除videoCastConsumer,作为实现文档状态。

然而,我们确实观察到,奇怪的是,onCastAvailabilityChanged和onCastDeviceDetected回调总是在后台和前台应用程序之后触发,你知道为什么会这样吗?是否有办法复制这种行为在活动负载上发生,或者至少在onResume/onPause中发生?

编辑:值得一提的是,我们尝试过调用mCastManager.startCastDiscovery,但是在我们再次备份/预见之前,回调才被调用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-24 16:56:34

有两件事需要发生:(1)当路由的可用性发生变化时,应用程序应当注册,以便得到通知;(2)它们应该能够得到当前的状态,即查看当时是否有可用的路由。然后,在每个具有MediaRouterButton的活动中,都应该使用这两种方法;首先注册回调,然后直接调用,看看是否有可用的路由。这将在启动时设置状态电流,回调使状态电流保持不变。

我正在对CCL中的这个领域做一些小的修改,以使这两个步骤更加健壮,因此如果您可以等待几天,您应该能够看到更新的版本;如果不能,那么您可能需要在您的方面做一些工作。

更新:在CCLv2.0.1中,进行了一些更改以使此过程更加健壮;您基本上需要向回调onCastAvailabilityChanged()注册,并且当您启动带有按钮的活动时,请调用VideoCastManager.isAnyRouteAvailable()设置强制转换按钮的初始可见性。

票数 2
EN

Stack Overflow用户

发布于 2015-05-14 02:37:17

我有一个适合我的解决方案:先打电话给mCastManager.stopCastDiscovery(); on Acitivity的onCreate()

stopCastDiscovery()删除媒体回调。这就是原因吗?(-)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29809210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档