Google Cast按钮未在Android中显示

Tar*_*ury 9 android google-cast chromecast

尝试在我的项目中使用Google的演员SDK v3,即使我在我附近活动了投射接收器,也无法显示投射按钮

我已将Google强制转换按钮添加到我的项目布局中,如下所示:

<android.support.v7.app.MediaRouteButton
        android:id="@+id/media_route_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:mediaRouteTypes="user"
        android:visibility="gone" />
Run Code Online (Sandbox Code Playgroud)

上面的按钮不是菜单按钮,所以我在onCreate中设置了按钮,如下所示:

CastButtonFactory.setUpMediaRouteButton(getApplicationContext(), mediaRouteButton);
Run Code Online (Sandbox Code Playgroud)

我也在CastOptionsProvider我的AndroidManifest文件中创建并指向它

根据Google演员文档:

在v3中,当应用程序到达前台并分别进入后台时,框架会自动启动和停止发现过程.不应使用MediaRouteSelector和MediaRouter.Callback.

任何想法为什么谷歌投射按钮不会自动出现,因为按钮应该处理他自己的状态?

编辑

我目前的解决方案/解决方法是:

castContext.addCastStateListener(
    newState -> updateCastButtonVisibility(button, newState)
);

private static void updateCastButtonVisibility(View button, int state) {
 if (state == CastState.NO_DEVICES_AVAILABLE) {
        button.setVisibility(View.GONE);
    } else {
        button.setVisibility(View.VISIBLE);
    }
}
Run Code Online (Sandbox Code Playgroud)

Tar*_*ury 6

显然这是演员SDK中的一个错误.

我为它开了一张票,谷歌演员团队设法重现它并接受了这个错误.

这是报告的错误的链接,以便您可以跟踪它


Pho*_*ixB 5

一种可能性是您的应用程序ID尚不存在.GoogleCast按钮未显示是应用程序ID无效.您可以测试默认ID:

CastMediaControlIntent.DEFAULT_MEDIA_RECEIVER_APPLICATION_ID
Run Code Online (Sandbox Code Playgroud)