2017-12-09 14 views
1

Ich suchte zwei Tage für diese Frage in github, aber ich kann keine richtige Antwort finden. Ich möchte ein Beispiel für die Erkennung pause/resume in ExoPlayer > 2.x. kann mir jemand ein beispiel geben? Ich überprüfte onPlayerStateChanged und Problem nicht gelöst. Ermitteln Pause/Fortsetzen in ExoPlayer

onPlayerStateChanged : STATE_BUFFERING 
onPlayerStateChanged : STATE_READY 

Ich habe nur dieses Protokoll von onPlayerStateChanged und dies nicht in allen Zeiten genannt!

Antwort

5

Sie müssen playWhenReady mit einem Player.EventListener überprüfen. Playback states of ExoPlayer sind unabhängig von den Spielern oder nicht angehalten zu werden:

player.addListener(new Player.DefaultEventListener() { 
    @Override 
    public void onPlayerStateChanged(boolean playWhenReady, int playbackState) { 
    if (playWhenReady && playbackState == Player.STATE_READY) { 
     // media actually playing 
    } else if (playWhenReady) { 
     // might be idle (plays after prepare()), 
     // buffering (plays when data available) 
     // or ended (plays when seek away from end) 
    } else { 
     // player paused in any state 
    } 
    } 
}); 

Zum Abspielen/Pause der Spieler ExoPlayer bietet

player.setPlayWhenReady(boolean) 

Die Reihenfolge der Wiedergabe Staaten mit ExoPlayer mit einer Mediendatei, die nie zu rebuffer Ständen ist einmal in jedem der vier Zustände und drückt nicht Wiedergabe-/Pause:

Player.STATE_IDLE; 
Player.STATE_BUFFERING; 
Player.STATE_READY; 
Player.STATE_ENDED; 

jedes Mal, wenn die Spieler es puffern muss geht:

Player.STATE_READY; 
Player.STATE_BUFFERING; 
Player.STATE_READY; 

Die Einstellung playWhenReady wirkt sich nicht auf den Status aus.

Alle zusammen, um Ihre Medien spielt eigentlich, wenn

playWhenReady && playbackState == Player.STATE_READY 

Es wenn fertig spielt. :)