Android Kotlin ExoPlayer 视频播放:实时更新 SeekBar 缓冲进度
要在 Androidx Kotlin 中使用 ExoPlayer 播放视频并监听 SeekBar 的缓冲进度,可以按照以下步骤进行操作:
- 首先,确保已将 ExoPlayer 库添加到您的项目中。在项目的'build.gradle'文件中添加以下依赖项:
implementation 'com.google.android.exoplayer:exoplayer:2.X.X'
(请将'2.X.X'替换为您希望使用的最新版本号)
- 在您的 Activity 或 Fragment 中,初始化 ExoPlayer 并设置相关监听器:
private lateinit var player: SimpleExoPlayer
private fun initializePlayer() {
// 创建SimpleExoPlayer实例
player = SimpleExoPlayer.Builder(context).build()
// 设置播放器准备监听器
player.addListener(object : Player.EventListener {
override fun onPlayerStateChanged(playWhenReady: Boolean, playbackState: Int) {
// 在这里处理播放器状态变化
// playbackState为Player.STATE_BUFFERING时表示正在缓冲
}
})
// 将ExoPlayer关联到ExoPlayerView
playerView.player = player
}
private fun releasePlayer() {
player.release()
}
- 设置 SeekBar 的缓冲进度监听器,并更新 SeekBar 的 secondaryProgress:
private fun setupSeekBar() {
exoPlayer.addListener(object : Player.EventListener {
override fun onPlayerStateChanged(playWhenReady: Boolean, playbackState: Int) {
if (playbackState == Player.STATE_BUFFERING) {
// 获取缓冲进度百分比
val bufferedPercentage = player.bufferedPercentage
val duration = player.duration
// 计算 secondaryProgress
val secondaryProgress = (bufferedPercentage * duration / 100).toInt()
// 更新 SeekBar 的 secondaryProgress
seekBar.secondaryProgress = secondaryProgress
}
}
})
}
-
在 Activity 或 Fragment 的'onStart()'和'onStop()'方法中分别调用'initializePlayer()'和'releasePlayer()'方法来初始化和释放播放器。
-
现在,您可以使用 ExoPlayer 播放视频,并实时更新 SeekBar 的缓冲进度。
请注意,上述代码中的'playerView'和'seekBar'是您自己定义的视图,您需要将它们替换为您项目中实际使用的视图。
原文地址: https://www.cveoy.top/t/topic/qhKU 著作权归作者所有。请勿转载和采集!