が必要な情報を取得する必要があり得ることを試みることができます再生リストの次の動画がいつ開始されるかを知る必要があります。私はExoPlayer.EventListener
にonPositionDiscontinuity()
というメソッドがあり、ビデオが変わるたびに呼び出されたり、プレイリストの次のものに「シーク」することがわかりました。
私はこの方法で広範囲に対処していませんが、私がこれまで見てきたことから、あなたが心配するべき方法です。メソッドが起動されたときに渡されるパラメータはありません。したがって、任意の瞬間に再生されているものを追跡するために、何らかの種類のカウンタまたはキューを保持する必要があります。
うまくいけば、これが役に立ちます。
編集:Exoplayer.getCurrentWindowIndex()
によって返されたインデックス内の変更はプレイリストMediaSource
内の項目の変化を検出するrecommended wayです。
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;
// ...
}
}
});
出典
2016-11-26 22:28:02
rpm
この回答をお持ちですか?コメントに記されているように、受け入れられた答えは役に立たない。 –