Android SurfaceView+MediaPlayer+SeekBar实现视频控制播放

一个简单的视频控制播放,使用原生控件进行视频处理,可以根据需要可以自行扩展。

效果图:

 

遇到的问题1:mediaPlay.setOnPreparedListener()第一次播放无法初始化问题 这个方法不知道什么情况,第二次之后就正常了。使用了异步的方法进行UI数据更新,也是不行。所以另找了方法去实现时间和seekbar拖动控制播放的功能。如果不需要控制,只是显示,就无所谓了、

解决方法:

使用mediaPlay.setOnPreparedListener()代替,内部调用setOnBufferingUpdateListener()方法进行数据更新,然后搞个线程将UI更新一下就ok了,效果还行。

代码片段(因为写demo喜欢写一起,有点乱,就先只放代码片段,需要完整的私聊发邮箱地址):

    private SurfaceView surfaceview;
    private MediaPlayer player;
    SurfaceHolder holder;
    private SeekBar video_seekbar;

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
         video_seekbar = (SeekBar) findViewById(R.id.video_seekbar);
        surfaceview = (SurfaceView) findViewById(R.id.surfaceview);
        video_time = (TextView) findViewById(R.id.video_time);
        holder = surfaceview.getHolder();
        player = new MediaPlayer();
        holder.addCallback(new SurfaceHolder.Callback() {
            @Override
            public void surfaceCreated(SurfaceHolder holder) {
                //开始运行时,就直接播放
                Play();
            }

            @Override
            public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
                //当画面发生变化执行
            }

            @Override
            public void surfaceDestroyed(SurfaceHolder holder) {
//当画面不见得时候执行
                stop();
            }
        });


video_seekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int i, boolean b) {

            }

            @Overri
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

直到世界尽头szk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值