要在 Androidx Kotlin 中使用 ExoPlayer 播放视频并监听 SeekBar 的缓冲进度,可以按照以下步骤进行操作:

  1. 首先,确保已将 ExoPlayer 库添加到您的项目中。在项目的'build.gradle'文件中添加以下依赖项:
implementation 'com.google.android.exoplayer:exoplayer:2.X.X'

(请将'2.X.X'替换为您希望使用的最新版本号)

  1. 在您的 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()
}
  1. 设置 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
            }
        }
    })
}
  1. 在 Activity 或 Fragment 的'onStart()'和'onStop()'方法中分别调用'initializePlayer()'和'releasePlayer()'方法来初始化和释放播放器。

  2. 现在,您可以使用 ExoPlayer 播放视频,并实时更新 SeekBar 的缓冲进度。

请注意,上述代码中的'playerView'和'seekBar'是您自己定义的视图,您需要将它们替换为您项目中实际使用的视图。

Android Kotlin ExoPlayer 视频播放:实时更新 SeekBar 缓冲进度

原文地址: https://www.cveoy.top/t/topic/qhKU 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录