如何使用ExoPlayer获取当前曲目的索引

时间:2017-03-31 12:34:54

标签: android exoplayer

我正在开发一个涉及使用Google ExoPlayer的Android项目。 我有一个视频源列表,我使用以下代码构建播放列表:

for (int i = 0; i < vidList.length(); i++) {
    MediaSource source = new ExtractorMediaSource(Uri.parse(vidList.getJSONObject(i).getString("url")),
                                buildDataSourceFactory(bandwidthMeter), extractorsFactory, mainHandler, HomeFragment.this);
                        mediaSources.add(source);
                        captions.add(vidList.getJSONObject(i).getString("caption"));
                    }

    mediaSource = new ConcatenatingMediaSource(mediaSources.toArray(new MediaSource[mediaSources.size()]));
然后我打电话给

exoplayer.prepare(mediasource, false, false)

并且视频连续播放。我想在textView中显示当前播放视频的标题,因此我有一个单独的列表,其中包含每个视频的“标题”值。

从搜索代码中我看到我可以像播放列表一样播放当前播放的视频;

exoPlayer.getCurrentPeriodIndex()

除了一个问题之外,它似乎有效并返回索引。当播放开始时,它返回值0。这是索引0处的视频返回周期0以及索引1处的视频。这仅发生在索引0和1处,此后其他一切看起来都很好,除了getCurrentPeriodIndex()将返回theAccurateIndex - 1。

我在演示Exoplayer应用程序中也看到了这一点。 有没有更好的方法来确定播放列表中当前播放的曲目?

感谢。

1 个答案:

答案 0 :(得分:2)

要查找当前播放的曲目,您需要参考currentWindowIndex exoPlayer字段。在Java中看起来像这样......

exoPlayer.getCurrentWindowIndex()

我不确定getCurrentPeriodIndex()做了什么,docs没有详细说明,我不喜欢推测。