使用 RemoteDisplayLocalService 时如何完全断开与 Cast 设备的连接?

How to fully disconnect from Cast device when using RemoteDisplayLocalService?

我正在使用 Cast SDK v2 和 RemoteDisplayLocalService 来投射本地内容。在MediaRouter.Callback中的onRouteUnselected函数中,我用CastRemoteDisplayLocalService.stopService()停止了服务。接收器应用程序停止;然而,系统下拉仍然显示应用程序已连接到接收器,如下所示:

我认为这是因为 CastRemoteDisplayLocalServiceGoogleApiClient 仍然连接到 Google Play 服务。是否有一种编程方式可以完全断开发送者应用程序的连接?

原来这个问题与RemoteDisplayAPI无关。其实是我用MediaProjectionAPI投屏造成的。来电

mMediaProjection = mMediaProjectionManager.getMediaProjection(resultCode, data); 

是在下拉菜单中打开 Cast 图标的原因。要关闭它,请调用

mMediaProjection.stop();

请记住,用户可以随时从下拉菜单中停止媒体投影(这不会结束远程显示会话),因此请将以下回调添加到您的 MediaProjection:

mMediaProjection.registerCallback(new MediaProjection.Callback() {
    @Override
    public void onStop() {
        // Stop casting when user stops media projection
        mMediaRouter.selectRoute(mMediaRouter.getDefaultRoute());
    }
}, null);