ExoPlayer ConcatenatingMediaSource 更改源回调

lel*_*man 4 android exoplayer

我正在无缝ConcatenatingMediaSource地玩很多MediaSource游戏,这很有趣,但是当玩家开始播放下一个MediaSource.

ExoPlayer.EventLister.onTracksChanged(TrackGroupArray, TrackSelected)MediaSource更改时被调用(我可以在那时听到新曲目),所以它似乎是正确的地方,但我如何检索MediaSource正在播放的索引?

MediaSource[] allSources = // ...
ConcatenatingMediaSource source = new ConcatenatingMediaSource(allSources);

ExoPlayer player = // ..
player.prepare(source);

// ...

@Override
public void onTracksChanged(TrackGroupArray trackGroups, TrackSelectionArray trackSelections) {
    // Can I retrieve the index of the MediaSource currently being played here?
    // If not, where!?
}
Run Code Online (Sandbox Code Playgroud)

lel*_*man 5

显然正确的回调是onPositionDiscontinuity(),获取当前MediaSource正在播放的索引的方法是ExoPlayer.getCurrentWindowIndex()

@Override
public void onPositionDiscontinuity() {        
    int sourceIndex = player.getCurrentWindowIndex();
}    
Run Code Online (Sandbox Code Playgroud)