我已经为我的 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/