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