自定义 影片播放器——MediaPlayer 与SurfaceView

本文介绍如何利用MediaPlayer创建视频播放器,包括指定视频尺寸、预览模式及处理prepare等事件的方法。文中详细解释了SurfaceView与SurfaceHolder的使用,并列举了MediaPlayer的操作流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本示例使用 使用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(), 对于视频回放,必须手动完成此工作。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值