栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

ExoPlayer记录学习

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ExoPlayer记录学习

https://exoplayer.dev/ui-components.html 这篇对我的帮助很大,感谢感谢
implementation 'com.google.android.exoplayer:exoplayer:2.x.x
自定义的控制按钮布局及添加了等待圈

 

        

最重要自定义进度条需要重写一个布局放在xml下,控制按钮Id名字保持一致即可。
exo_play
exo_pause
exo_position
exo_duration
exo_progress



    

    

    

        

        

        
    



写好布局之后,已经完成一半啦

        //创建播放实例
        player = ExoPlayerFactory.newSimpleInstance(requireActivity())
        //播放实例赋值给UI。
        mVideoView?.player = player
        //数据源
        val dataSourceFactory = DefaultDataSourceFactory(this, Util.getUserAgent(requireActivity(), ""))
        videoSource = ProgressiveMediaSource.Factory(dataSourceFactory).createMediaSource(Uri.parse(“视频地址”))
                player.prepare(videoSource)
            }

        }
        //缓存好自动播放
        player.playWhenReady = true
        //监听播放状态以及失败原因
        player.addListener(object : Player.EventListener {
            override fun onPlayerStateChanged(playWhenReady: Boolean, playbackState: Int) {
                when (playbackState) {
                    ExoPlayer.STATE_ENDED -> {
                        //播放器完成了播放

                    }
                    ExoPlayer.STATE_READY -> {
                        mProb.visibility = View.GONE
                        // 播放器可以立即从当前位置开始播放。
                        //当点击暂停或者播放时都会调用此方法
                        //当跳转进度时,进度加载完成后调用此方法
                    }
                    ExoPlayer.STATE_BUFFERING -> { //播放器无法立即从当前位置开始播放。这种状态通常需要加载更多数据时发生。
                        mProb.visibility = View.VISIBLE
                    }
                }
            }

            override fun onPlayerError(error: ExoPlaybackException?) {
                super.onPlayerError(error)
                showToast("播放异常")
            }

        })

    }
    override fun onPause() {
        super.onPause()
        player.setPlayWhenReady(false)
    }

    override fun onResume() {
        super.onResume()
        player.setPlayWhenReady(true)
    }

    override fun onDestroyView() {
        super.onDestroyView()
        instance = null
        if (player != null) {
            player.stop()
            player.release()
        }
    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/336771.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号