Android开发06_VideoView、SurfaceView两种视频播放器

一、前言

Android中视频播放的方式有两种,一种是使用系统封装好的VideoView,使用起来比较方便,系统API把所有播放的内容都封在了这个类中,唯一不足的是无法自定义,比如你想修改播放的进度条就是一件十分麻烦的事情。

所以Android还提供了另一种视频播放的类SurfaceView,此类结合MediaPlayer使用起来十分得心应手,自定义功能强大到你想做什么都可以在此去实现,所以编者认为市场上流行的视频播放基本都是通过SurfaceView来实现的。


二、VideoView使用步骤

1、在布局中使用并初始化VideoView

// # 设置本地资源
//vv.setVideoPath(Environment.getRootDirectory() + "/dream.mp4");
// # 设置网络资源
vv.setVideoURI(Uri.parse("http://tb-video.bdstatic.com/tieba-smallvideo/1116878_e3a8d2b10bd099f523cbc9e87a64f53a.mp4"));

2、初始化媒体控制器MediaController

// # 2 初始化控制器
MediaController controller = new MediaController(this);

3、用VideoView绑定媒体控制器

// 绑定VideoView和控制器
vv.setMediaController(controller);
controller.setMediaPlayer(vv);

4、播放视频

// 播放视频
vv.start();

说明:VideoView使用起来相对简单,只需要绑定媒体控制器即可实现较为美观的视频播放界面,但是如果我们想自定义视频播放界面,VideoView就完成不了我们的期望了。


三、SurfaceView+MediaPlayer使用步骤

1、在布局中使用并初始化SurfaceView


2、通过SurfaceView初始化持有者SurfaceHolder,SurfaceHolder主要负责控制SurfaceView

// 初始化持有者
surfaceHolder = sv.getHolder();


3、给SurfaceHolder添加Callback监听,此监听会重写三个抽象方法:surfaceCreated(创建时调用)、surfaceChanged(发生改变时调用)、surfaceDestroyed(销毁时调用)

// 设置监听
surfaceHolder.addCallback(this);

4、给SurfaceHolder设置类型

// 设置类型
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);//类型(不可删除)

5、在步骤3给SurfaceHolder添加的监听方法中初始化并使用MediaPlayer(MediaPlayer使用步骤:http://blog.csdn.net/baidu_17619859/article/details/53815949)


6、给MediaPalyer设置显示屏:此方法需要在MediaPalyer对象准备完成后使用

mediaPlayer.setDisplay(surfaceHolder);


四、附属

1、设置横屏
//设置横屏播放
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);


你可能感兴趣的:(Android基础)