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 添加自定义投射按钮?