在 TextureView 的 surfaceTextureAvailable 回调方法中如何写代码
时间: 2024-02-13 22:59:35 浏览: 58
Android中使用TextureView播放视频
在 TextureView 的 surfaceTextureAvailable 回调方法中,我们可以获取到一个 SurfaceTexture 对象,该对象可以将视频帧渲染到 TextureView 上。我们可以在这个回调方法中创建 MediaPlayer 对象,并将其与 SurfaceTexture 对象相关联,以便进行视频播放。
以下是一个示例代码,演示了如何在 TextureView 的 surfaceTextureAvailable 回调方法中创建 MediaPlayer 对象并启动视频播放:
```java
@Override
public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
// 创建 MediaPlayer 对象
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setSurface(new Surface(surface));
try {
// 设置要播放的视频文件路径
mediaPlayer.setDataSource("path/to/video/file");
mediaPlayer.prepareAsync(); // 异步准备 MediaPlayer
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
// 准备完成后开始播放视频
mediaPlayer.start();
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
```
在这个示例代码中,我们首先创建了一个 MediaPlayer 对象,并通过 mediaPlayer.setSurface() 方法将其与 Surface 对象相关联。接着,我们设置了要播放的视频文件路径,并通过 mediaPlayer.prepareAsync() 方法异步准备 MediaPlayer 对象。在 MediaPlayer 准备完成后,我们通过 mediaPlayer.start() 方法开始播放视频。
需要注意的是,在 TextureView 销毁时,我们应该及时释放 MediaPlayer 对象,以避免内存泄漏。可以在 TextureView 的 surfaceTextureDestroyed 回调方法中释放 MediaPlayer 对象,如下所示:
```java
@Override
public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
mediaPlayer.release(); // 释放 MediaPlayer 对象
return true;
}
```
阅读全文