4

这是我正在做的事情:

  • 通过设置手动连接到 ChromeCast。
  • 使用我已经连接的 ChromeCast 设备启动管理演示文稿的应用程序以显示自定义布局。
  • 通过手动关闭它来完成我的应用程序。
  • 到这个时候,我仍然可以看到我的设备屏幕投射。这是我想以编程方式断开投射的地方,因此我无法再看到屏幕投射。

在进行演示时,我可以访问我要投射到的显示器:

MediaRouter.RouteInfo route = mMediaRouter.getSelectedRoute(MediaRouter.ROUTE_TYPE_LIVE_VIDEO);
    return route != null ? route.getPresentationDisplay() : null;

关于如何实现此功能的任何想法?

更新:

对于那些对此感兴趣的人,我就是这样做的(感谢 Ali Naddaf 的回复):

@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2)
public void disconnect(){
    MediaRouter mMediaRouter = (MediaRouter) getSystemService(Context.MEDIA_ROUTER_SERVICE);
    mMediaRouter.selectRoute(MediaRouter.ROUTE_TYPE_LIVE_VIDEO, mMediaRouter.getDefaultRoute());
}
4

4 回答 4

10

对于像我这样使用 v3 Cast SDK 来寻找答案的人:

mSessionManager.endCurrentSession(true);
于 2016-08-09T12:21:30.440 回答
5

如下所示找到 SessionManager 并断开与 chromecast 会话的连接:

    mRemoteMediaClient.stop(); // stop remote media
    CastContext castContext = CastContext.getSharedInstance(this);
    SessionManager mSessionManager = castContext.getSessionManager();
    mSessionManager.endCurrentSession(true);
于 2018-02-14T09:57:16.737 回答
0

如果我理解正确,您正在让用户在您的应用程序之外启动屏幕投射/镜像。然后用户进入您的应用程序,当他们离开时,您要断开连接吗?如果我不正确,请告诉我。

可以断开屏幕镜像,但我不确定这样做是否正确。当用户进入您的应用时,您不知道用户是否因为您的应用或其他原因打开了屏幕投射。如果用户在进入您的应用程序之前出于某种其他原因这样做了,那么您的应用程序在离开时断开用户连接是不正确的。你会同意吗?

于 2015-04-08T04:26:24.820 回答
0

这对我有用:

mediarouter.unselect(0)
于 2016-05-03T11:13:27.490 回答