RemotePlaybackClient,stop()没有得到回调

时间:2014-03-11 16:38:48

标签: android google-cast chromecast

我正在尝试编写RemotePlaybackClient示例应用,部分原因是the one published by Google crashes aapt

我可以RemotePlaybackClient支持play(),并在Chromecast上播放视频。

但是,当我拨打stop()时,要停止播放视频,而Chromecast会停止播放(显示一个黑色屏幕,其中有一个投射图标居中),我传入的SessionActionCallback stop()不会调用onResult()来电:

  private void stop() {
    logToTranscript(getActivity().getString(R.string.stop_requested));

    SessionActionCallback stopCB=new SessionActionCallback() {
      @Override
      public void onResult(Bundle data, String sessionId,
                           MediaSessionStatus sessionStatus) {
        logToTranscript(getActivity().getString(R.string.stopped));
        isPlaying=false;
        isPaused=false;
        getActivity().supportInvalidateOptionsMenu();
        endSession();
      }
    };

    client.stop(null, stopCB);
  }

如果我尝试pause(),则会发生同样的事情 - 未调用传递给SessionActionCallback的{​​{1}}。

The sample code published by Google表明应该调用这些回调,但是,我再也无法成功编译。

有谁知道pause()在什么情况下不起作用,而SessionActionCallback 使用的ItemActionCallback工作?

更新

我已经提交了issue 66996issue 67032,后者特别是我在这里看到的问题,因为我遇到了与官方示例应用程序相同的问题。

1 个答案:

答案 0 :(得分:1)

我相信所有答案都取决于你如何建立联系。 因为在谷歌代码中,代码说你所做的客户不会离开会话而不应该为空。

if (!mClient.hasSession()) {
   // ignore if no session
   return;
}

/ *********其余代码无法访问*********** /

@Override
public void pause() {
    if (!mClient.hasSession()) {
        // ignore if no session
        return;
    }
    if (DEBUG) {
        Log.d(TAG, "pause");
    }
    mClient.pause(null, new SessionActionCallback() {
        @Override
        public void onResult(Bundle data, String sessionId, MediaSessionStatus sessionStatus) {
            logStatus("pause: succeeded", sessionId, sessionStatus, null, null);
            if (mCallback != null) {
                mCallback.onPlaylistChanged();
            }
        }
        @Override
        public void onError(String error, int code, Bundle data) {
            logError("pause: failed", error, code);
        }
    });
}