Я решил это сам, и он прекрасно работает для меня.Вот то, что я сделал в двух словах, может быть, это дает некоторые идеи.
Я создал CustomMediaRouteDialogFactory
, который расширяет MediaRouteDialogFactory
и предоставил свои собственные диалоги, переопределив onCreateChooserDialogFragment
и onCreateControllerDialogFragment
.Эти диалоги расширяют исходные диалоги выбора и контроллера из каркаса.
Состояние кнопки приведения на панели инструментов по-прежнему управляется автоматически, я только что передал свой собственный селектор маршрутов и фабрику диалогов поставщику.
onCreateOptionsMenu :
MenuItem mediaRouteMenuItem = menu.findItem(R.id.media_route_menu_item);
MediaRouteActionProvider mediaRouteActionProvider = (MediaRouteActionProvider) MenuItemCompat.getActionProvider(mediaRouteMenuItem);
mediaRouteActionProvider.setRouteSelector(chromecastManager.getMediaRouteSelector());
mediaRouteActionProvider.setDialogFactory(mediaRouteDialogFactory);
Недостаток: я закончил тем, что написал собственный код обнаружения и фильтрации маршрутов, изучив исходный код реализации диалогового окна выбора платформы и некоторые другиедругие зависимости.Во-вторых, диалог контроллера напрямую связывается с RemoteMediaClient.
Таким образом, я мог сделать все по своему усмотрению, но мне потребовалась дополнительная работа.