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 设备不显示在选择列表中的主要内容,如果未能解决你的问题,请参考以下文章