Я хочу создать Dynamic Audio Playlist, используя Exoplayer. Я использовал DynamicMediaSource, а также ConcateMediaSource, он будет работать нормально, но если мой проигрыватель в данный момент играет и я попытаюсь добавить mediasource, тогда текущий проигрыватель может перейти в состояние паузы и добавить его заново. mediasource будет воспроизводиться. Изначально я создам источник мультимедиа только для одного аудио и сделаю player.playWhenReady true только для первого раза. Затем добавлю еще один источник в список и создаю источник аудио для моего списка воспроизведения.
Так можно ли добавить медиасоус без паузы плеера? А плейлист можно играть в добавленной манере?
код ниже для создания медиа-источника для первого аудио: -
fun createAudioSource(data: MusicDetailResponse.AudioX, audioAllItem: MusicDetailResponse.Audio, position: Int) {
player = ExoPlayerFactory.newSimpleInstance(context, DefaultTrackSelector())
val userAgent = Util.getUserAgent(context, context.getString(R.string.label_user_agent))
val dataSourceFactory = DefaultHttpDataSourceFactory(
userAgent, null,
DefaultHttpDataSource.DEFAULT_CONNECT_TIMEOUT_MILLIS,
1800000,
true)
val hlsMediaSource = HlsMediaSource.Factory(dataSourceFactory)
.createMediaSource(Uri.parse(data.audio))
player!!.prepare(hlsMediaSource)
player!!.playWhenReady = true
}
fun addAudioList(item: MusicDetailResponse.AudioX) {
tempAudioList.add(item)
createHlsMediaSource(tempAudioList)
}
private fun createHlsMediaSource(tempAudioList: ArrayList<MusicDetailResponse.AudioX>) {
for (i in 1 until tempAudioList.size) {
val userAgent = Util.getUserAgent(context, context.getString(R.string.label_user_agent))
val dataSourceFactory = DefaultHttpDataSourceFactory(
userAgent, null,
DefaultHttpDataSource.DEFAULT_CONNECT_TIMEOUT_MILLIS,
1800000,
true)
val hlsMediaSource = HlsMediaSource.Factory(dataSourceFactory)
.createMediaSource(Uri.parse(tempAudioList[i].audio))
cMediaSource!!.addMediaSource(hlsMediaSource)
}
player?.prepare(cMediaSource, false, false)
}