gpt4 book ai didi

android - Chromecast 自定义 MediaRouteChooserDialog

转载 作者:行者123 更新时间:2023-11-29 02:28:41 25 4
gpt4 key购买 nike

我在自定义 MediaRouteChooser/MediaRouteController 对话框时遇到问题(我需要不同的布局,一些额外的操作)。

转换按钮是通过调用来设置的CastButtonFactory.setUpMediaRouteButton(getApplicationContext(), menu, R.id.media_route_menu_item);onCreateOptionsMenu 中。

我发现我需要扩展 MediaRouteDialogFactory 并返回我自己的 MediaRouteChooserDialogFragment 并覆盖 onCreateChooserDialog 并返回我的自定义对话。然而,这需要是一个 MediaRouteChooserDialog 但扩展它没有多大意义(您需要复制所有代码,因为一切都是私有(private)的,您不能使用它们,例如 mRouter, mCallback).

我的问题是,我怎样才能显示自己的对话框和自己列出的路由,同时将 CastButtonFactory.setUpMediaRouteButton 解决方案保留在 onCreateOptionsMenu 中?我真的不想理会 chromecast 按钮状态,如可见性、连接状态、决定是否需要显示路由选择器或路由 Controller 等。我什至不确定我应该如何列出路由/管理发现,所以在该主题上也能提供一点帮助。

最佳答案

我自己解决了这个问题,对我来说效果很好。这是我所做的简而言之,也许它提供了一些想法。

我创建了一个 CustomMediaRouteDialogFactory,它扩展了 MediaRouteDialogFactory 并通过覆盖 onCreateChooserDialogFragmentonCreateControllerDialogFragment 提供了我自己的对话框>。这些对话框扩展了框架中的原始选择器和 Controller 对话框。

工具栏内转换按钮的状态仍然是自动管理的,我只是将自己的路由选择器和对话框工厂传递给提供者。

onCreateOptionsMenu:

MenuItem mediaRouteMenuItem = menu.findItem(R.id.media_route_menu_item);
MediaRouteActionProvider mediaRouteActionProvider = (MediaRouteActionProvider) MenuItemCompat.getActionProvider(mediaRouteMenuItem);
mediaRouteActionProvider.setRouteSelector(chromecastManager.getMediaRouteSelector());
mediaRouteActionProvider.setDialogFactory(mediaRouteDialogFactory);

缺点:通过查看框架的选择器对话框实现和一些其他依赖项的源代码,我最终编写了自己的路由发现和过滤代码。其次, Controller 对话框直接与 RemoteMediaClient 通信。

这样我可以完全定制,但需要一些额外的工作。

关于android - Chromecast 自定义 MediaRouteChooserDialog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50782464/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com