49 votes

RemotePlaybackClient, stop () ne reçoit pas de rappel

Je suis d'essayer d'écrire un RemotePlaybackClient exemple d'application, en partie parce que celui publié par Google se bloque aapt.

Je peux obtenir de l' RemotePlaybackClient de soutien play(), et la lecture d'une vidéo sur un Chromecast.

Cependant, quand je l'appelle stop(), pour arrêter la lecture de la vidéo, tandis que le Chromecast n'arrêtez la lecture (montrant un écran noir avec un casting icône centré), l' SessionActionCallback que je passe à l' stop() appel n'est pas appelé avec 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);
  }

La même chose se produit si j'essaie pause() -- SessionActionCallback passée de pause() n'est pas invoquée.

L'exemple de code publié par Google montre que ces rappels doivent être invoquée, mais, encore une fois, je n'arrive pas à compiler avec succès.

Personne ne sait dans quelles circonstances l' SessionActionCallback n'auraient pas de travail, alors que l' ItemActionCallback utilisé avec play() permettrait de travail?

Mise à JOUR

J'ai déposé question 66996 et question 67032, dont le dernier est précisément le problème que je vois ici, que je rencontre ce même problème avec l'échantillon officiel app.

1voto

DeepakPanwar Points 228

Je crois que toutes les réponses résident sur la façon dont vous établissez la connexion. Parce que dans le code de Google, le code indique que le client pour lequel vous aviez demandé de ne pas quitter la session et ne doit pas être nul.

 if (!mClient.hasSession()) {
// ignore if no session
return;
 

/ ******* Le reste du code serait inaccessible ********* /}

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

-10voto

Jetez un oeil à ce lien. J'ai mis en place le RemotePlayBackClient avec l'aide du code ici. S'il vous plaît laissez-moi savoir si vous avez un problème avec comprendre la logique. https://github.com/commonsguy/cwac-mediarouter/blob/master/demo-remoteplayback/src/com/commonsware/cwac/mediarouter/demo/remoteplayback/PlaybackFragment.java

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X