Chromecast RemoteMediaClient 有时不适用于“播放”和“暂停”等某些操作

Posted

技术标签:

【中文标题】Chromecast RemoteMediaClient 有时不适用于“播放”和“暂停”等某些操作【英文标题】:Chromecast RemoteMediaClient sometimes doesnt work for certain actions like "play" and "pause" 【发布时间】:2016-08-09 05:29:31 【问题描述】:

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

如果用户点击 MainActivity 中的视频之一,它会转到 VideoActivity。

我使用 CastButtonFactory 为两个活动设置菜单项

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

但我只是在 VideoActivity 中添加 sessionlistener

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

问题是,如果我使用 VideoActivity 中的 castmenu 项连接到投射设备,我总是可以使用 API 控制播放

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

MediaRouteButtonDialog(如果您在连接模式下单击投射菜单项会弹出该对话框)播放控件也适用于这种情况。

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

作品:

remoteMediaClient.load();

不起作用:

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

【问题讨论】:

您还遇到这个问题吗? 【参考方案1】:

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

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

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

这是一个放置播放/暂停切换按钮的示例:

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">

【讨论】:

以上是关于Chromecast RemoteMediaClient 有时不适用于“播放”和“暂停”等某些操作的主要内容,如果未能解决你的问题,请参考以下文章

检测我是不是是唯一连接到 Chromecast 设备的 Chromecast 发件人应用

Chromecast - 网址格式

Chromecast 仅限于 720p 图像?

尝试连接时 Chromecast 给出错误代码 7

升级后的 Chromecast - 设备不再可检测

通过 Chromecast 通过 url 投射网页