本示例使用 使用MediaPlayer 制作一个 视频播放器 ,可指定视频的大小、预览的模式之外,还提供对 prepare,OnCompletionListener 等事件的判断。
通过创建SurfaceView 视图与控制SurfaceView 的 SurfaceHolder 对象,搭配 MediaPlayer 的 setDisplay() 方法来指定要将图像显示于指定的 SurfaceView 之上
要在Activity 里配置 SurfaceView ,必须实现 SurfaceHolder.Callback接口
注意这里 <SurfaceView android:id="@+id/mSurfaceView1"
android:layout_width="320px"
android:layout_height="240px"/>, 虽然设置宽高属性为320X240 (pixel),
但在java类中 如果没有以下一行
mSurfaceHolder01.setFixedSize(176,144);
播放视频时会以原影片大小播放,也就是说单纯设置320 X 240 没有作用, SurfaceView 其余范围会以黑底呈现
示意图如下:
具体用法请参见 EX07_14 工程
MediaPlayer 类是非常系统化的,需要按特定顺序调用操作来正确初始化媒体播放器, 并让它准备回放. 以下总结了一些特征:
1 设置了 MediaPlayer 的数据源以后,就不能随意更改它, 必须创建一个新MediaPlayer 对象或调用 reset() 方法来重新初始化播放器的状态
2 调用prepare() 之后,可以调用getCurrentPosition()、getDuration()和isPlaying() 来获取播放器的当前状态。也可以在调用prepare() 之后调用setLooping() 和 setVolume()
3 调用start()之后,可以调用pause()、stop()、seekTo().
4 每个 MediaPlayer 创建一个新线程,要确保使用播放器完成后调用release(), 对于视频回放,必须手动完成此工作。