Android MediaPlayer + SurfaceView 封装视频播放
作为一名经验丰富的开发者,我将教会你如何使用 Android MediaPlayer 和 SurfaceView 来封装视频播放功能。下面是整个实现过程的步骤:
步骤 | 操作 |
---|---|
1 | 添加权限和组件 |
2 | 初始化 MediaPlayer |
3 | 设置 SurfaceView |
4 | 设置资源路径 |
5 | 准备 MediaPlayer |
6 | 监听 MediaPlayer 的状态 |
7 | 控制视频播放 |
8 | 释放 MediaPlayer |
接下来,我会详细介绍每一步需要做什么,并提供代码示例。
1. 添加权限和组件
首先,在 AndroidManifest.xml 文件中添加以下权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
然后,在布局文件中添加 SurfaceView 组件:
<SurfaceView
android:id="@+id/surfaceView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
2. 初始化 MediaPlayer
在你的活动或片段中,创建一个 MediaPlayer 实例:
private MediaPlayer mediaPlayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mediaPlayer = new MediaPlayer();
}
3. 设置 SurfaceView
在代码中找到 SurfaceView,并将其与 MediaPlayer 关联起来:
SurfaceView surfaceView = findViewById(R.id.surfaceView);
SurfaceHolder surfaceHolder = surfaceView.getHolder();
surfaceHolder.addCallback(new SurfaceHolder.Callback() {
@Override
public void surfaceCreated(SurfaceHolder holder) {
mediaPlayer.setDisplay(holder);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
// 可以在此处处理 SurfaceView 的大小变化
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
mediaPlayer.setDisplay(null);
}
});
4. 设置资源路径
通过设置资源路径来指定要播放的视频文件:
String videoPath = "android.resource://" + getPackageName() + "/" + R.raw.video;
mediaPlayer.setDataSource(this, Uri.parse(videoPath));
在这个示例中,将视频文件放置在 res/raw 目录下,并使用 R.raw.video 来引用。
5. 准备 MediaPlayer
在设置资源路径后,需要调用 prepareAsync() 方法来准备 MediaPlayer:
mediaPlayer.prepareAsync();
6. 监听 MediaPlayer 的状态
在准备完成后,可以注册 OnPreparedListener 来监听 MediaPlayer 的状态:
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
// 准备完成后可以开始播放视频
mediaPlayer.start();
}
});
7. 控制视频播放
你可以使用以下方法来控制视频的播放:
- mediaPlayer.start():开始播放视频
- mediaPlayer.pause():暂停播放视频
- mediaPlayer.seekTo(position):跳转到指定位置
- mediaPlayer.stop():停止播放视频
8. 释放 MediaPlayer
在活动或片段销毁时,需要释放 MediaPlayer 的资源:
@Override
protected void onDestroy() {
super.onDestroy();
if (mediaPlayer != null) {
mediaPlayer.release();
mediaPlayer = null;
}
}
通过以上步骤,你已经成功地封装了一个基本的视频播放器,使用 Android MediaPlayer 和 SurfaceView 实现。希望这篇文章能对你有所帮助!
标签:视频,meidaplayer,SurfaceView,MediaPlayer,mediaPlayer,surfaceview,android,播放,void From: https://blog.51cto.com/u_16175464/6832990