我正在尝试写一个 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
传递给 pause()
没有被调用。
The sample code published by Google表明应该调用这些回调,但是,我还是无法成功编译。
有谁知道在什么情况下SessionActionCallback
不起作用,而 ItemActionCallback
与 play()
一起使用会工作吗?
更新
我已提交 issue 66996和 issue 67032 ,后者正是我在这里看到的问题,因为我在官方示例应用程序中遇到了同样的问题。
最佳答案
我相信所有答案都取决于您如何建立联系。 因为在谷歌代码中,代码表示您创建的客户端不会离开 session 并且不应该为空。
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);
}
});
}
关于android - RemotePlaybackClient,stop() 没有得到回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22330988/