Android 如何让非 chromecast 设备不显示在选择列表中

Posted

技术标签:

【中文标题】Android 如何让非 chromecast 设备不显示在选择列表中【英文标题】:Android How to keep non chromecast devices from showing up in the selection list 【发布时间】:2014-08-15 19:06:38 【问题描述】:

我正在将 chromecast 支持添加到我正在开发的应用程序中,我注意到我看到了每台流式传输视频的测试设备,包括 xbox 和我们开发的众多 rokus、智能电视和苹果电视。现在我不能直接向他们投射,所以我想知道两件事。

首先我可以使用 android 上的 mediarouter api 投射到这些设备上,其次我如何才能让它们不显示在设备选择列表中。

编辑:这就是我设置 MediaRouteSelector 的方式

mMediaRouter = MediaRouter.getInstance(getApplicationContext());
        mediaRouteSelector = new MediaRouteSelector.Builder()
        .addControlCategory(CastMediaControlIntent.categoryForCast(Config.ChromecastRecieverID))
        .addControlCategory(MediaControlIntent.CATEGORY_LIVE_AUDIO)
            .addControlCategory(MediaControlIntent.CATEGORY_LIVE_VIDEO)
            .addControlCategory(MediaControlIntent.CATEGORY_REMOTE_PLAYBACK)
        .build();

MenuItem mediaRouteMenuItem = menu.findItem(R.id.media_route_menu_item);
MediaRouteActionProvider mediaRouteActionProvider = 
(MediaRouteActionProvider) MenuItemCompat.getActionProvider(mediaRouteMenuItem);

if(mediaRouteActionProvider==null)
    mediaRouteActionProvider  = new  MediaRouteActionProvider(this);
    MenuItemCompat.setActionProvider(mediaRouteMenuItem, mediaRouteActionProvider);
            
mediaRouteActionProvider.setRouteSelector(this.mediaRouteSelector);
mediaRouteActionProvider.setDialogFactory(new MediaRouteDialogFactory() 
    @Override
    public MediaRouteControllerDialogFragment onCreateControllerDialogFragment() 
           return new MediaRouteControllerDialogFragment() 
                  @Override
                  public MediaRouteControllerDialog onCreateControllerDialog(
                                    Context context, Bundle savedInstanceState) 
                                MediaRouteControllerDialog mControllerDialog = new MediaRouteControllerDialog(BaseActivity.this);
                                return mControllerDialog;
                            
                        ;
                    
                );

【问题讨论】:

“我注意到我看到了每一个流式传输视频的测试设备”——在哪里看到它们? 在我从菜单中按下 chromecast 按钮时显示的设备选择对话框中 另外,这只发生在安卓设备上。我从未在我们正在开发的应用程序的 ios 版本的列表中看到任何非 chromecast 设备 你是如何设置你的MediaRouteSelector的? 我已经添加了我现在如何使用它。 【参考方案1】:

现在我不能直接投给他们

您的代码不会写入“cast”。因此,你会拿起:

与您的设备配对并提供实时音频路由的任何设备,例如蓝牙扬声器

与您的设备连接并提供实时视频路由的任何设备,例如 Miracast

您设备上的任何应用发布 MediaRouteProvider 以实现 RemotePlaybackClient 协议(基本上,Chromecast 减去更高级的接收器自定义选项)

首先我可以使用 android 上的 mediarouter api 投射到这些设备上

这取决于你对动词“cast”的使用。所有这些都是可用的媒体路由,无论是用于实时音频、实时视频、标准 Android 远程播放还是特定于 Chromecast 的远程播放。

我怎样才能不让它们出现在设备选择列表中

如果您不想向这些事物提供内容,请从您的 MediaRouteSelector 中删除类别。

【讨论】:

好吧,这是有道理的。我不知道我添加的额外 .addControlCategory 调用可以让我看到列表中的所有额外设备。

以上是关于Android 如何让非 chromecast 设备不显示在选择列表中的主要内容,如果未能解决你的问题,请参考以下文章

在android中重新启动应用程序时如何重新连接chromecast设备

如何在 Android SDK for Chromecast 中切换活动

如何将 Android 发件人的 IP 地址获取到 Chromecast 设备?

如何在 android 的选项菜单中为 chromecast 添加自定义投射按钮?

如何在 Chromecast android sender SDK 的字幕对话框中更改颜色?

从 android 4.2 在 chromecast 上启用字幕