如何使用MediaPlayer+SurfaceView播放视频、暂停播放、停止播放?
时间: 2023-09-15 19:05:31 浏览: 131
android MediaPlayer+SurfaceView实现播放
### 回答1:
可以使用以下代码实现MediaPlayer SurfaceView播放视频、暂停播放、停止播放:
播放视频:
```
MediaPlayer mediaPlayer = new MediaPlayer();
SurfaceView surfaceView = (SurfaceView) findViewById(R.id.surfaceView);
SurfaceHolder surfaceHolder = surfaceView.getHolder();
surfaceHolder.addCallback(new SurfaceHolder.Callback() {
@Override
public void surfaceCreated(SurfaceHolder holder) {
try {
mediaPlayer.setDataSource("your_video_path");
mediaPlayer.setDisplay(holder);
mediaPlayer.prepare();
mediaPlayer.start();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
// do nothing
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
mediaPlayer.release();
}
});
```
暂停播放:
```
if (mediaPlayer.isPlaying()) {
mediaPlayer.pause();
}
```
停止播放:
```
if (mediaPlayer.isPlaying()) {
mediaPlayer.stop();
}
```
### 回答2:
使用MediaPlayer和SurfaceView来播放视频,可以按照以下步骤进行操作:
1. 首先,创建一个MediaPlayer对象和SurfaceView对象,用于控制视频的播放和显示。
2. 设置SurfaceView的回调方法,在回调方法中获取到SurfaceHolder对象,并将其与MediaPlayer对象进行关联。
3. 通过MediaPlayer的setDataSource()方法设置要播放的视频文件的路径。
4. 调用MediaPlayer的prepareAsync()方法进行异步准备,准备完成后触发onPrepared()回调方法。
5. 在onPrepared()方法中,可以调用MediaPlayer的start()方法开始播放视频。
6. 若要暂停播放视频,可以调用MediaPlayer的pause()方法。
7. 若要停止播放视频,可以调用MediaPlayer的stop()方法,并在停止后调用MediaPlayer的release()方法释放资源。
简单的示例代码如下:
```java
MediaPlayer mediaPlayer = new MediaPlayer();
SurfaceView surfaceView = findViewById(R.id.surfaceView);
surfaceView.getHolder().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) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
});
try {
mediaPlayer.setDataSource("视频文件路径");
mediaPlayer.prepareAsync();
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mediaPlayer.start();
}
});
} catch (IOException e) {
e.printStackTrace();
}
// 暂停播放
mediaPlayer.pause();
// 停止播放
mediaPlayer.stop();
mediaPlayer.release();
```
以上就是使用MediaPlayer和SurfaceView播放视频、暂停播放和停止播放的简要步骤。
### 回答3:
使用MediaPlayer SurfaceView播放视频、暂停播放、停止播放的步骤如下:
1. 创建MediaPlayer对象,并设置其数据源为要播放的视频文件路径或URL。
2. 创建SurfaceView对象,并通过getHolder()方法获取SurfaceHolder对象。
3. 通过SurfaceHolder对象添加回调方法,实现SurfaceHolder.Callback接口的三个方法:surfaceCreated、surfaceChanged和surfaceDestroyed。在surfaceCreated方法中,将SurfaceHolder传给MediaPlayer对象的setDisplay方法。
4. 调用MediaPlayer对象的prepareAsync或prepare方法准备播放。
5. 在MediaPlayer对象准备完成的监听器中,调用MediaPlayer对象的start方法开始播放视频。
6. 若要暂停播放视频,调用MediaPlayer对象的pause方法。
7. 若要停止播放视频,调用MediaPlayer对象的stop方法,并在停止后调用MediaPlayer对象的release方法释放资源。
可以在播放视频之前设置一些附加功能,如设置循环播放、设置音量等。此外,还可以监听MediaPlayer对象的各种事件,如播放完成、缓冲进度等,以便进行相应的处理。
需要注意的是,在使用MediaPlayer SurfaceView播放视频时,可能会涉及到一些多线程的处理。比如,在surfaceCreated方法中设置MediaPlayer对象的setDisplay方法时,MediaPlayer对象可能还未准备好,需要等待MediaPlayer对象准备完成后才能设置。因此,可以通过监听MediaPlayer对象的准备完成事件来确保播放视频时SurfaceView已经生成。
以上是通过MediaPlayer SurfaceView播放视频、暂停播放、停止播放的基本步骤,具体实现还需根据需要进行适当调整。
阅读全文