brauchen So bin ich in ähnlich einem Szenario und müssen wissen, wann das nächste Video in der Wiedergabeliste gestartet wird. Ich habe festgestellt, dass die ExoPlayer.EventListener
eine Methode namens onPositionDiscontinuity()
hat, die jedes Mal aufgerufen wird, wenn das Video in der Wiedergabeliste wechselt oder "sucht".
Ich habe nicht mit dieser Methode ausgiebig herumgespielt, aber von dem, was ich bis jetzt sehen kann, ist dies die Methode, um die Sie besorgt sein sollten. Es gibt keine Parameter, die beim Abfeuern der Methode übergeben werden. Daher müssen Sie eine Art Zähler oder Warteschlange behalten, um zu verfolgen, was gerade gespielt wird.
Hoffentlich hilft das!
Edit: Änderung des Brechungsindex zurück von Exoplayer.getCurrentWindowIndex()
ist die recommended way Artikel Änderung in einer Wiedergabeliste MediaSource
zu erkennen.
int lastWindowIndex = 0; // global var in your class encapsulating exoplayer obj (Activity, etc.)
exoPlayer.addListener(new ExoPlayer.EventListener() {
@Override
public void onLoadingChanged(boolean isLoading) {
}
@Override
public void onPlayerStateChanged(boolean playWhenReady, int playbackState) {
}
@Override
public void onTimelineChanged(Timeline timeline, Object manifest) {
}
@Override
public void onPlayerError(ExoPlaybackException error) {
}
@Override
public void onPositionDiscontinuity() {
//THIS METHOD GETS CALLED FOR EVERY NEW SOURCE THAT IS PLAYED
int latestWindowIndex = exoPlayer.getCurrentWindowIndex();
if (latestWindowIndex != lastWindowIndex) {
// item selected in playlist has changed, handle here
lastWindowIndex = latestWindowIndex;
// ...
}
}
});
Haben Sie jemals eine Antwort darauf erhalten? Die angenommene Antwort hilft nicht, wie in den Kommentaren angemerkt. –