textureView的几种回调,多个textureView的判断

textureView=(TextureView) findViewById(R.id.textureView);

textureView.setSurfaceTextureListener(new TextureView.SurfaceTextureListener() {
    //当TextureView准备好使用Surface的SurfaceTexture时调用。可以使用
    @Override
    public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {

    }
    //SurfaceTexture的缓冲区大小更改时调用。
    @Override
    public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) {

    }
    //在将SurfaceTexture要销毁指定的对象时调用
    @Override
    public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
        return false;
    }
    //SurfaceTexture通过更新指定的值时调用
    @Override
    public void onSurfaceTextureUpdated(SurfaceTexture surface) {

    }
});

 

使用implements TextureView.SurfaceTextureListener如有多个textureView,可使用textureView.getSurfaceTexture()判断是哪一个
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TextureViewsurfaceTextureAvailable 回调方法中,我们可以获取到一个 SurfaceTexture 对象,该对象可以将视频帧渲染到 TextureView 上。我们可以在这个回调方法中创建 MediaPlayer 对象,并将其与 SurfaceTexture 对象相关联,以便进行视频播放。 以下是一个示例代码,演示了如何在 TextureViewsurfaceTextureAvailable 回调方法中创建 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 对象,以避免内存泄漏。可以在 TextureViewsurfaceTextureDestroyed 回调方法中释放 MediaPlayer 对象,如下所示: ```java @Override public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) { mediaPlayer.release(); // 释放 MediaPlayer 对象 return true; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值