RemotePlaybackClient,stop()没有得到callback

我正在尝试编写RemotePlaybackClient示例应用程序,部分原因是由Google发布的应用程序崩溃 。

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

但是,当我呼叫stop() ,停止播放video,而Chromecast停止播放(显示带有居中投射图标的黑色屏幕),则传入stop()调用的SessionActionCallback不会被调用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() ,同样的事情发生 – 传递给pause()SessionActionCallback没有被调用。

谷歌发布的示例代码显示,这些callback应该被调用,但是,我再也不能得到这个编译成功。

有谁知道在什么情况下, SessionActionCallback将无法正常工作,而与play()使用ItemActionCallback 工作?

UPDATE

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

我相信所有答案驻留在如何进行连接。 因为在谷歌代码中,代码说你所做的客户端不会离开会话,不应该为空。

 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); } }); }