连接暂停/恢复后未触发传递给 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 【问题描述】:我使用CastCompanionLibrary
和Default 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(...) 的回调的主要内容,如果未能解决你的问题,请参考以下文章