2017-03-08 20 views
2

私はConcatenatingMediaSourceを多く使用しています。MediaSourceは驚くほど楽しいですが、プレーヤーが次のプレイを開始するときにコールバックを受け取る方法が見つかりませんMediaSourceExoPlayer ConcatenatingMediaSourceソースコールバックを変更する

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!? 
} 

答えて

2

どうやら私はあなたがonTracksChanged(でplayer.getCurrentWindowIndex()を呼び出す必要がありますだと思う右のコールバックがonPositionDiscontinuity()であり、現在のMediaSourceが再生されているのインデックスを取得する方法はExoPlayer.getCurrentWindowIndex()

@Override 
public void onPositionDiscontinuity() {   
    int sourceIndex = player.getCurrentWindowIndex(); 
}  
+0

である)、そのあなたに曲のインデックス開始を与えるでしょう。少なくとも、それは最初の歌に役立つでしょう。 – akki

+0

私はそこに試しましたが、間違ったインデックスを返していましたが、これもうまくいきました[こちら](https://github.com/google/ExoPlayer/issues/2053) – lelloman

関連する問題