android - 单击默认 MediaRouteControllerDialog 中的“停止投射”后,Chromecast 继续播放
问题描述
单击使用的默认对话框中的“停止投射”按钮MediaRouteButton
会触发回调SessionManagerListener::onSessionEnded
并关闭 Chromecast 通知控件。但是视频一直在电视上播放。
我也在使用com.google.android.exoplayer2.ext.cast.CastPlayer
启动 Chromecast。回调也被SessionAvailabilityListener::onCastSessionUnavailable
触发。
使用 Chromecast 通知的关闭按钮时不会出现此问题。
解决方案
当您单击“停止投射”按钮时会发生什么情况MediaRouter::unselect
是调用此方法。您需要做的是聆听何时发生这种情况并手动结束当前会话。
这是一个例子:
MediaRouter.getInstance(context).addCallback(
MediaRouteSelector
.Builder()
.addControlCategory(MediaControlIntent.CATEGORY_REMOTE_PLAYBACK)
.build(),
object: MediaRouter.Callback() {
override fun onRouteUnselected(
router: MediaRouter?,
route: MediaRouter.RouteInfo?,
reason: Int
) {
if(reason in listOf(MediaRouter.UNSELECT_REASON_STOPPED, MediaRouter.UNSELECT_REASON_DISCONNECTED)) {
CastContext.getSharedInstance(context).sessionManager.endCurrentSession(true)
}
}
}
)
推荐阅读
- python - 如果动作失败,如何重复循环中的步骤?
- html - 如何在 Eclipse 上打开 HTML
- python - 在 Ubuntu 20.04 中编译 libimobiledevice 时出错
- c# - 发现 DotNet 无效证书
- python - 使用 key.get_pressed() 检测单键按下
- javascript - Angular中具有依赖注入的工厂设计模式
- api - 如何从 URN 或 id 获取 LinknedIn 帖子的 URL?
- c# - 使用 C# 统一线程以进行优化
- css - Magento 1 后端无法访问(未加载 css 和 js)
- java - @RabbitListener 如何在注解中设置接收消息的频率