使用exoplayer新媒体播放音频url



我正在通过https://developer.android.com/codelabs/exoplayer-intro#0了解新媒体a3和ExoPlayer

这些文档真的很好。但是,音频会在活动启动后立即开始播放。

我想只在点击RecyclerView时播放歌曲。我有每首歌的uri。

musicAdapter = MusicAdapter(onClickListener = MusicAdapter.OnMusicClickListener{uri->
//I want to play the song here using the uri with exoplayer media3 
})

从文档中,播放器立即初始化活动开始如下:

val trackSelector = DefaultTrackSelector(requireContext()).apply {
setParameters(buildUponParameters().setMaxVideoSizeSd())
}
player = ExoPlayer.Builder(requireContext())
.setTrackSelector(trackSelector)
.build()
.also { exoPlayer ->
val mediaItem = MediaItem.fromUri(getString(R.string.media_url_mp3))
exoPlayer.setMediaItem(mediaItem)
exoPlayer.playWhenReady = true
exoPlayer.seekTo(currentItem, playbackPosition)
exoPlayer.prepare()
}

你可以将playWhenReady属性设置为false,它基本上告诉exoplayer在加载后不播放视频/音频。然后你可以在onClickHandler中手动调用player.play()函数。

一个简单的例子是:-

val trackSelector = DefaultTrackSelector(this).apply {
setParameters(buildUponParameters().setMaxVideoSizeSd())
}
player = ExoPlayer.Builder(this)
.setTrackSelector(trackSelector)
.build()
.apply {
playWhenReady = false
}
musicAdapter = MusicAdapter(onClickListener = MusicAdapter.OnMusicClickListener{uri->
val mediaItem = MediaItem.fromUri(uri)
player.setMediaItem(mediaItem)
player.prepare()
player.play()
})

注意:我也考虑过uri类型的uri变量,而不是字符串。

最新更新