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