如何解决在默认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)
}
}
}
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。