连接暂停/恢复后未触发传递给 RemoteMediaPlayer.load(...).setResultCallback(...) 的回调

Posted

技术标签:

【中文标题】连接暂停/恢复后未触发传递给 RemoteMediaPlayer.load(...).setResultCallback(...) 的回调【英文标题】:Callback passed to RemoteMediaPlayer.load(...).setResultCallback(...) does not fired after connection suspension/recovery 【发布时间】:2014-07-18 18:35:08 【问题描述】:

我使用CastCompanionLibraryDefault Receiver

为了知道视频加载到投射设备的结果,我在PendingResult.setResultCallback(...) 上设置了回调,该回调由RemoteMediaPlayer.load(...) 返回。如果在视频加载期间连接被挂起并且恢复的回调从未触发。

连接恢复后如何判断视频加载状态(进行中/完成)? 加载完成如何判断结果?

【问题讨论】:

这是迟到的反应,但可以帮助其他人。 codota.com/web/assistant/code/rs/5c7cb5a1ac38dc0001e4338f#L647 【参考方案1】:

您可以随时询问状态,并据此了解发生了什么:Cast.CastApi.requestStatus(mApiClient)RemoteMediaPlayer.requestStatus(..),具体取决于您的需要。这就是你所需要的吗?

【讨论】:

1.连接恢复后是否必须致电RemoteMediaPlayer.requestStatus(..) 并等待结果?否则数据会过时吗? RemoteMediaPlayer 是否会在连接恢复后更新其状态?还是永久过时? 2.如果加载完成,我可以根据MediaStatus.getPlayerState()MediaStatus.getMediaInfo()判断视频加载的结果。 3. 但是如何确定加载是否完成/in_progress?加载状态没有MediaStatus.PLAYER_STATE_*。加载期间MediaStatus.getPlayerState() 返回MediaStatus.PLAYER_STATE_IDLE 我还是找不到答案。如果我错过了文档或其他讨论中的某些内容,请指出。【参考方案2】:

没有可靠的方法来确定连接恢复后视频加载的状态,因为默认接收器不会向发送者发送类似 MediaStatus.PLAYER_STATE_LOADING 的内容。见state diagrams。

RemoteMediaPlayer 在连接恢复后不会更新其状态。为了与接收者同步,请在连接恢复后调用 RemoteMediaPlayer.requestStatus(..)。否则 RemoteMediaPlayer 可能处于过期状态。

【讨论】:

以上是关于连接暂停/恢复后未触发传递给 RemoteMediaPlayer.load(...).setResultCallback(...) 的回调的主要内容,如果未能解决你的问题,请参考以下文章

Vue.js 变量在传递给另一个组件后未定义

jenkins暂停恢复job

显示 iOS 共享表后未调用 viewWillDisappear

学习笔记第二十三节课

如何暂停线程池、运行函数和恢复?

AVPlayer 缓冲后未恢复