Chromecast RemoteMediaClient 有时不适用于 "play" 和 "pause" 等某些操作

Chromecast RemoteMediaClient sometimes doesnt work for certain actions like "play" and "pause"

我已经设置了新的 chromecast sdk v3,但我无法解决这个问题。

如果用户单击 MainActivity 中的其中一个视频,它将转到 VideoActivity。

并且我使用 CastButtonFactory 为两个 Activity 设置了菜单项

castMenuItem = CastButtonFactory.setUpMediaRouteButton(getApplicationContext(), menu,
                R.id.action_mediaroute); 

但我只是在 VideoActivity 中添加了会话监听器

 mCastContext.getSessionManager().addSessionManagerListener(mSessionManagerListener, CastSession.class);

问题是,如果我使用 VideoActivity 中的 castmenu 项连接到投射设备,我始终可以使用 API

控制播放
remoteMediaClient.pause();
remoteMediaClient.play();

和 MediaRouteButtonDialog(如果您在连接模式下单击投射菜单项将弹出)播放控件在这种情况下也有效。

但是,如果我连接到投射设备,使用 MainActivity 中的投射菜单项启动会话,APIs 不起作用,MediaRouteButtonDialog 也不起作用。

有效:

remoteMediaClient.load();

不起作用:

remoteMediaClient.play();
remoteMediaClient.pause();

尝试延长 MediaIntentReceiver。它可以被子类化以处理自定义操作或在处理预定义操作时覆盖默认行为。

如果您已经实现了自己的 MediaIntentReceiver,则需要将其添加到清单中,并在 CastMediaOptions 中设置其名称。

默认情况下,该片段显示一个 play/pause 切换按钮。开发人员可以使用属性 castControlButtons 来覆盖要显示的按钮。支持的控制按钮定义为ID资源。

这是一个放置 play/pause 切换按钮的示例:

item>
    <item>@id/cast_button_type_play_pause_toggle</item>
    ...
    <fragment
        android:id="@+id/cast_mini_controller"
        ...
        app:castControlButtons="cast_mini_controller_control_buttons"
        class="com.google.android.gms.cast.framework.media.widget.MiniControllerFragment">