如何制作自定义 Cast MediaRouter 对话框

How to Make A Custom Cast MediaRouter Dialog

我目前在我的项目中使用 CastCompanionLibrary。它运行良好,但我需要自定义 Cast 按钮的行为。

目前,正在显示一个包含 Cast 设备的对话框按钮(这是预期的行为)。此外,在投射时,会显示元数据和 stop/start 按钮。我需要定制这个。我不想显示 stop/start 按钮。我怎样才能做到这一点?

以下是我的代码的相关部分:

<item
    android:id="@+id/media_route_menu_item"
    android:title="Google Cast"
    compat:actionProviderClass="android.support.v7.app.MediaRouteActionProvider"
    compat:showAsAction="always"/>

if (mCastManager != null) {
    mediaRouteMenuItem = mCastManager.addMediaRouterButton(menu, R.id.media_route_menu_item);
}

你有几个选择。首先,您应该注意,当您进行投射时,您可以按照当时停止投射的行为导致本地播放的方式构建您的应用程序,因此 "stop casting" 按钮应该足够了。如果您只隐藏 CCL 提供的现有对话框的 "content" 区域没问题,您可以将布局文件 "custom_media_route_controller_controls_dialog.xml" 复制到您自己的项目中,然后只隐藏您想要的区域(不要删除任何组件,但将内容区域包装在一个简单的布局中并隐藏该布局)。如果您想拥有自己的,请遵循 CCL 的做法;通过覆盖 onCreateControllerDialogFragment() 扩展 MediaRouteDialogFactory,并定义您自己的 MediaRouteControllerDialog 扩展(参见 CCL 中的包 com.google.android.libraries.cast.companionlibrary.cast.dialog.video),最后,扩展 VideoCastManager 并覆盖那里的 getMediaRouteDialogFactory() 以 return 您自己的工厂。