Android 使用Kotlin开发 ExoPlayer 监听获取总时长缓存时长播放时长度 总进度条上显示
在使用Kotlin开发ExoPlayer时,可以使用ExoPlayer的Player.EventListener接口来监听播放状态和进度。要获取总时长、缓存时长和播放时长度,你可以在该接口的方法中实现相应的逻辑。
下面是一个示例代码,展示了如何监听ExoPlayer的状态并在总进度条上显示相关信息:
// 创建一个实现Player.EventListener接口的类
class PlayerEventListener : Player.EventListener {
override fun onPlayerStateChanged(playWhenReady: Boolean, playbackState: Int) {
// 当播放状态发生变化时调用
if (playbackState == Player.STATE_READY && playWhenReady) {
// 播放已经准备好
val duration = player.duration // 获取总时长,单位为毫秒
val bufferedPosition = player.bufferedPosition // 获取缓存时长,单位为毫秒
val currentPosition = player.currentPosition // 获取播放时长度,单位为毫秒
// 更新总进度条上的显示
updateProgressBar(duration, bufferedPosition, currentPosition)
}
}
}
// 创建ExoPlayer实例
val player = ExoPlayerFactory.newSimpleInstance(context)
// 将PlayerEventListener注册到ExoPlayer
val playerEventListener = PlayerEventListener()
player.addListener(playerEventListener)
在onPlayerStateChanged方法中,当播放状态变为STATE_READY且playWhenReady为true时,表示播放已准备好。你可以通过player.duration、player.bufferedPosition和player.currentPosition来获取总时长、缓存时长和播放时长度。然后,你可以根据自己的需求,更新总进度条上的显示。
请注意,上述示例中的updateProgressBar方法是一个自定义方法,你需要根据你的UI设计和需求来实现该方法
原文地址: http://www.cveoy.top/t/topic/iIln 著作权归作者所有。请勿转载和采集!