android - 如何从 Cast 设备接收状态更新

标签 android chromecast

我已经为我的 Android 音频流应用程序开发了与 Chromecast 的集成。对于接收器,我正在使用 Chromecast developer page 中描述的 Styled Media Receiver .大多数情况下一切正常,但是,我在播放期间没有收到来自 Cast 设备的 onStatusUpdated() 调用。当我启动媒体流时,它开始播放并发送带有 IDLE MediaStatus 的状态更新。一旦它开始播放,我就会收到一个带有 PLAYING MediaStatus 的 onStatusUpdated() 调用。在此之后,我没有收到任何更新,这意味着我无法使用音频剪辑的当前搜索位置更新我的应用程序 UI。

为了解决这个问题,我基本上是在每次获得 PLAYING MediaStatus 时运行一个 Runnable。这是伪代码:

public void onStatusUpdated() {
    ...
    if (mMediaStatus == MediaStatus.PLAYER_STATE_PLAYING) {
        mHandler.postDelayed(mUpdateProgressRunnable, 1000);
        ...

}

mUpdateProgressRunnable = new Runnable() {
    @Override
    public void run() {
        if (mRemoteMediaPlayer != null && mApiClient != null) {
            mRemoteMediaPlayer.requestStatus(mApiClient);
        }
    }
}

这样做正确吗?为什么 Receiver 不自己发送更新?这似乎工作正常,但令我惊讶的是我无法在网上找到任何关于正确方法的信息。

感谢任何帮助!谢谢。

最佳答案

您需要有一个线程来更新搜索栏。但是您不需要为视频中的当前位置显式执行 requestStatus。你应该调用

RemoteMediaPlayer.getApproximateStreamPosition

这由 Cast SDK 管理,是跟上接收器媒体播放进度的有效方式。

关于android - 如何从 Cast 设备接收状态更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24210114/

相关文章:

ios - 如何将自定义 UIView 转换到 Google Chromecast iOS?

java - 从 Android 设备获取 GMT 时区

java - 接下来的编辑文本字段遵循其自身

android - Exoplayer cast 实现在 2019 年 7 月运行但在本月(2019 年 10 月)不运行且不更改任何代码,有人知道发生了什么吗?

google-chrome-extension - 我可以使用 UDN 作为 chromecast 的唯一 ID

android - 将 Chromecast 支持添加到 Android 应用程序时出现问题

android - 有一个获取位置的代码 fragment ,不想考虑网络位置

java - Android VpnService 保护存储在 native 代码中的套接字?

android - 如何使用卡片 View android在相对布局的中心添加垂直线?

ios - 自定义 Google Cast 迷你 Controller