You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 19:45:21