我想知道如何使用 ArrayList 中的 MediaSource 在 ExoPlayer 中连续播放两首以上歌曲。
我可以用来ConcatenatingMediaSource连续播放两首歌曲,但我必须将它们作为单独的参数加载到此基金中。我不想对整个歌曲列表执行此操作。我试图找到这个问题的答案,但似乎有一些根本性的误解,因为我似乎无法复制其他人在其他 StackOverflow 问题或博客等中的努力。(许多博客显示了简单的两个媒体源播放列表,如 ExoPlayer 中所示)文档)。
此代码用于上下文:
private fun prepareExoPlayer(songs: ListSongs) {
val uris = parseUris(songs)
val mediaSource = buildMediaSource(uris)
applyAudioAttributes()
simpleExoPlayer!!.prepare(mediaSource, false, false)
}
Run Code Online (Sandbox Code Playgroud)
这段代码就是问题所在:
private fun buildMediaSource(uris: ArrayList<Uri>): MediaSource {
val userAgent = Util.getUserAgent(this, "MusicPlayer")
val defaultMediaSource = DefaultDataSourceFactory(this, userAgent)
val progressiveMediaSource = ProgressiveMediaSource.Factory(defaultMediaSource)
val mediaSources = ArrayList<MediaSource>()
for (uri in uris) {
mediaSources.add(progressiveMediaSource.createMediaSource(uri))
}
return if (mediaSources.size == 1) {
mediaSources[0]
} else {
val concatenatingMediaSource = ConcatenatingMediaSource()
concatenatingMediaSource.addMediaSources(mediaSources) …Run Code Online (Sandbox Code Playgroud)