RemotePlaybackClient, stop() не получает обратный вызов
Я пытаюсь написать пример приложения RemotePlaybackClient
, отчасти потому, что тот, который опубликовал Google, сбой 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()
, не вызывается.
Пример кода, опубликованного Google, показывает, что эти обратные вызовы должны быть вызваны, но, опять же, я не могу получить это, чтобы успешно скомпилировать.
Кто-нибудь знает, при каких обстоятельствах SessionActionCallback
не будет работать, а ItemActionCallback
, используемый с play()
, будет работать?
UPDATE
Я зарегистрировал номер 66996 и issue 67032, последний из которых является, в частности, проблемой, я видя здесь, когда я сталкиваюсь с этой проблемой с официальным примером приложения.
Ответы
Ответ 1
Я верю всем. Ответьте, как вы устанавливаете соединение.
Потому что в коде Google код говорит, что клиент, который вы сделали, не покинул сеанс и не должен быть нулевым.
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);
}
});
}