Android如何立即停止投屏?MediaRouter相关实现方案问询
实现应用内强制停止投屏功能
你的应用已通过MediaRouter.Callback监听投屏路由变化:
private val mediaRouterCallback = object : MediaRouter.Callback() { override fun onRouteChanged(router: MediaRouter?, route: RouteInfo?) { super.onRouteChanged(router, route) // 通知观察者投屏状态变化 } }
现在需要在Fragment中实现stopCasting()方法,当触发PreventCasting事件时立即终止投屏。以下是完整实现:
// 在Fragment中实现stopCasting()方法 private fun stopCasting() { // 获取MediaRouter实例 val mediaRouter = MediaRouter.getInstance(requireContext()) // 获取当前活跃的投屏路由 val currentRoute = mediaRouter.selectedRoute // 判断当前路由是否为投屏输出路由 if (currentRoute.type != MediaRouter.RouteInfo.TYPE_LAUNCH) { // 切换回本地设备路由(停止投屏) mediaRouter.selectRoute(mediaRouter.getDefaultRoute()) } } // 事件监听逻辑 when (event) { PreventCasting -> { stopCasting() } }
代码说明:
- 通过
MediaRouter.getInstance(requireContext())获取系统媒体路由服务实例 selectedRoute获取当前正在使用的投屏路由- 对比路由类型,排除本地启动路由(
TYPE_LAUNCH),确保仅针对投屏路由操作 - 调用
selectRoute(mediaRouter.getDefaultRoute())切换回本地默认路由,从而停止投屏
内容的提问来源于stack exchange,提问作者Mohammadreza Khahani
相关产品推荐
相关产品推荐

