2017-04-19 4 views
0

Depuis mon téléphone Android, si je rejoue une vidéo déjà diffusée sur un téléviseur, le message «ExpandedControlsActivity» apparaît sur le téléphone et la vidéo commence à la TV. Je ne veux pas que la vidéo commence depuis le début Je veux juste qu'elle continue à jouer à la télévision et que le résumé de 'ExpandedControlsActivity' soit mis à jour avec la TV. C'est possible?Reprendre la lecture de la vidéo en cours dans Google Cast 'ExpandedControlsActivity' plutôt que de redémarrer

Répondre

0

AFAIK, oui. Il est possible de reprendre la lecture de la vidéo en cours, car Google Cast a cette fonctionnalité de conception, comme indiqué dans sender resumes cast. Avec cela, vous pouvez essayer d'utiliser la classe SessionManagerListener.

Comme indiqué dans ce documentation,

sessions sont gérées par la classe SessionManager, que votre application peut accéder via CastContext.getSessionManager(). Les sessions individuelles sont représentées par des sous-classes de la classe Session. Par exemple, CastSession représente des sessions avec des appareils Cast. Votre application peut accéder à la session Cast active en tant que SessionManager.getCurrentCastSession().

De même, vous pouvez surveiller des événements de session tels que la reprise à l'aide de la classe SessionManagerListener. L'infrastructure Google Cast tente automatiquement de quitter une terminaison anormale/abrupte pendant qu'une session était active.

Voici un exemple sur la façon dont vous pouvez gérer les sessions:

public class MyActivity extends Activity { 
    private CastSession mCastSession; 
    private SessionManager mSessionManager; 
    private final SessionManagerListener mSessionManagerListener = 
      new SessionManagerListenerImpl(); 
    private class SessionManagerListenerImpl implements SessionManagerListener { 
     @Override 
     public void onSessionStarted(Session session, String sessionId) { 
      invalidateOptionsMenu(); 
     } 
     @Override 
     public void onSessionResumed(Session session, boolean wasSuspended) { 
      invalidateOptionsMenu(); 
     } 
     @Override 
     public void onSessionEnded(Session session, int error) { 
      finish(); 
     } 
    } 
    @Override 
    protected void onCreate() { 
     mSessionManager = CastContext.getSharedInstance(this).getSessionManager(); 
     super.onCreate(); 
    } 
    @Override 
    protected void onResume() { 
     mCastSession = mSessionManager.getCurrentCastSession(); 
     mSessionManager.addSessionManagerListener(mSessionManagerListener); 
     super.onResume(); 
    } 
    @Override 
    protected void onPause() { 
     super.onPause(); 
     mSessionManager.removeSessionManagerListener(mSessionManagerListener); 
     mCastSession = null; 
    } 
}