2017-07-12 10 views
1

Existe-t-il un moyen de se connecter aux événements de clic Lecture/Pause des contrôles SimpleExoPlayerView? J'essaie de raccorder Chromecast à mon activité de jeu et je dois être capable de répondre à des événements de jeu pour déterminer si exoplayer doit lire le contenu ou il devrait être envoyé à Chromecast.Android Exoplayer SimpleExoPlayerView Lire/Suspendre les événements

Je pensais que surPlayerStateChanged pourrait aider avec ceci mais je ne peux pas voir un état ExoPlayer.STATE_PLAYING.

Répondre

1

Essayez cette solution:

SimpleExoPlayerView simpleExoPlayerView = (SimpleExoPlayerView)findViewById(R.id.simpleExoView); 
     simpleExoPlayerView.setControlDispatcher(new PlaybackControlView.ControlDispatcher() { 
      @Override 
      public boolean dispatchSetPlayWhenReady(ExoPlayer exoPlayer, boolean b) { 

      // implement what you need 

      return b; 
     } 

     @Override 
     public boolean dispatchSeekTo(ExoPlayer exoPlayer, int i, long l) { 
      return false; 
     } 
    }); 
+0

En théorie, cela devrait résoudre mon problème, mais ce ne est pas assez. J'espérais implémenter quelque chose comme la machine d'état dans l'application de démonstration chromecast https://codelabs.developers.google.com/codelabs/cast-videos-android/#1. Cela mis à part cela ne fonctionne que partiellement. L'application de démonstration utilise ExoPlayer.setPlayWhenReady lors de l'exécution de OnStart, mais cela permet de contourner le paramètre dispatchSetPlayWhenReady de SimpleExoPlayerView que nous avons défini. La seule fois où dispatchSetPlayWhenReady est touché est après son chargement initial et le bouton de lecture est touché. Et je ne vois pas un SimpleExoPlayerView.setPlayWhenReady qui serait envoyé à l'ExoPlayer sous-jacent –

+0

Ok, je devais faire dig bien que la source SimpleExoPLayerView mais je pense que j'ai trouvé un travail autour. Il semble que les boutons de lecture utilisent mSimpleExoPlayerView.dispatchMediaKeyEvent (new KeyEvent (KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_PLAY)); qui va déléguer au controlDispatcher.setPlayWhenReady –