标签: textureview

BufferQueue被放弃后我该怎么办?

我正在使用纹理视图在我的Android应用程序中显示相机的预览.然而,我注意到,每次我的应用程序暂停时,我都会收到此错误:

03-18 18:23:44.315: W/BufferQueue(19582): [unnamed-19582-20] cancelBuffer: BufferQueue has been abandoned!
Run Code Online (Sandbox Code Playgroud)

谁能告诉我这里发生了什么?当我的应用程序暂停时,我所做的就是从这里取消所有这些内容onSurfaceTextureDestroyed()

 public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
    mCamera.setPreviewCallback(null);
    mCamera.stopPreview();
    mCamera.release();
    return true;
}
Run Code Online (Sandbox Code Playgroud)

android surfaceview android-camera textureview

27
推荐指数
1
解决办法
4万
查看次数

TextureView与GLSurfaceView或如何将GLSurfaceView与EGL14一起使用

我对EGL感到困惑.

我的GLSurfaceView创建了一个EGLContext.现在我创建一个共享上下文.现在我需要使用EGLExtension.

我必须使用的方法称为(> = API18):

EGLExt.eglPresentationTimeANDROID(android.opengl.EGLDisplay display, android.opengl.EGLSurface surface, long time);
Run Code Online (Sandbox Code Playgroud)

问题是,GLSurfaceView只创建了javax.microedition.khronos.egl.EGLContext.

这告诉我,不要使用GLSurfaceView.所以我尝试了稍微类似的TextureView,区别在于你必须处理自己的EGL内容.哪个对此有益.

但是:TextureView速度较慢,至少它看起来像那样,所以我用Method Profiler记录了一些图表:

这里的TextureView有自己的EGL处理: 在此输入图像描述 顶部的Thread是一个唤醒Thread中间的时钟,它呈现在TextureView上.之后将调用主线程,用于重绘TextureView.

......这里的GLSurfaceView有自己的EGL处理这次时钟在中间,它调用顶部的线程将我的图像渲染成帧缓冲区,我直接将其提供给SurfaceView(RENDERMODE_WHEN_DIRTY)并调用requestRender请求视图呈现. 在此输入图像描述

正如您所看到的那样,通过GLSurfaceView,它看起来比使用TextureView更清晰.

在这两个例子中,我在屏幕上没有任何其他东西,并且它们使用相同的着色器呈现完全相同的网格物体.

我的问题:有没有办法将GLSurfaceView与EGL14上下文一起使用?

我做错什么了吗?

android glsurfaceview textureview

25
推荐指数
2
解决办法
1万
查看次数

CropView的裁剪相机预览

我有一个固定宽度和高度的TextureView,我想在其中显示相机预览.我需要裁剪相机预览,以便它看起来不会在我的TextureView中拉伸.怎么做种植?如果我需要使用OpenGL,如何将Surface Texture绑定到OpenGL以及如何使用OpenGL进行裁剪?

public class MyActivity extends Activity implements TextureView.SurfaceTextureListener 
{

   private Camera mCamera;
   private TextureView mTextureView;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_options);

    mTextureView = (TextureView) findViewById(R.id.camera_preview);
    mTextureView.setSurfaceTextureListener(this);
}

@Override
public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
    mCamera = Camera.open();

    try 
    {
        mCamera.setPreviewTexture(surface);
        mCamera.startPreview();
    } catch (IOException ioe) {
        // Something bad happened
    }
}

@Override
public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
    mCamera.stopPreview();
    mCamera.release();
    return true;
}

@Override
public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) {
} …
Run Code Online (Sandbox Code Playgroud)

android opengl-es android-camera textureview

23
推荐指数
3
解决办法
3万
查看次数

我如何使用Android的"Surface"类?

是否有Surface,SurfaceHolder,EGLSurface,SurfaceView,GLSurfaceView,SurfaceTexture和TextureView的详细说明?特别是:

  • SurfaceView和TextureView有什么区别?
  • 我是否需要使用GLSurfaceView来使用OpenGL ES?
  • Surface和EGLSurface如何相互作用?
  • SurfaceTexture有什么作用?
  • 为什么我在SurfaceView上绘制的东西必须高于或低于其他所有东西?
  • 什么是SurfaceFlinger?
  • 状态和导航栏的组成如何工作?
  • 虽然我们正在努力,但在Android上构建游戏循环的正确方法是什么?

android surfaceview glsurfaceview surfaceflinger textureview

17
推荐指数
1
解决办法
1515
查看次数

Android SDK - camera2 - 在TextureView上绘制矩形

我是Android开发的新手,我发现很难在camera2 api上找到好的例子.

我在大多数问题上慢慢地工作,但在这个问题上,我被困住了.在默认相机中,当您触摸屏幕进行对焦时,它会暂时显示焦点区域的矩形.我想做类似的事情(或者在这种情况下,完全相同的事情开始,所以我可以弄明白).

我在某处看到(我认为SDK文档中的TextureView页面),当它被用作相机预览时,你无法在textureview上绘制 - 并且调用lock方法将返回null而不是画布.

我在网上找到了这个:https://github.com/commonsguy/vidtry/ 但我无法让它工作.我或者得到错误说我的主视图不能投射到我的可绘制视图,反之亦然 - 或者我的可绘制视图位于顶部并使屏幕变黑 - 或者它在底部并且不会响应触摸事件(并试图强制从上面的视图中执行点击它会导致崩溃.)

我卡住了!任何人都可以给我一个解释或示例,说明如何在事件位置上绘制矩形几秒钟?

谢谢!

android android-layout android-camera android-canvas textureview

14
推荐指数
1
解决办法
1万
查看次数

在纹理视图上播放视频与视频的宽高比

我正在使用纹理视图在我的服务器上播放视频,但是它会拉伸视频并且无法保持视频的宽高比.但是,我希望保持视频的长宽比,如在应用程序或Instagram应用程序中.

android textureview

13
推荐指数
2
解决办法
6459
查看次数

如何在使用MediaPlayer后清除SurfaceTexture?

我正在使用带有TextureView子项的ListView.TextureView使用MediaPlayer播放视频.当TextureView被回收时,最后一帧保留在曲面上,直到下一个MediaPlayer使用它.

什么是"清除"TextureView表面(例如黑色)的最简单方法,以便不显示旧框架?

android textureview

12
推荐指数
1
解决办法
4161
查看次数

为什么在textureview中的相机预览比在surfaceview中更模糊?

我发现当使用textureview而不是surfaceview作为相机预览(两者都通过mediarecorder连接到相机)时,预览会更加模糊.

模糊的意思是在纹理视图中你可以看到像素,特别是在缩放时.使用surfaceview时不是这种情况.为什么会这样?

android surfaceview android-camera android-mediarecorder textureview

11
推荐指数
1
解决办法
1313
查看次数

从TextureView有效地获取位图

我试图从a获取每个帧TextureView,不幸的是尝试:

textureView.getBitmap();
Run Code Online (Sandbox Code Playgroud)

性能降低的结果是获得位图的更快方法.使用NDK更好吗?

寻找实际的例子

android textureview android-bitmap

11
推荐指数
1
解决办法
8788
查看次数

具有透明背景的OpenGL场景+下方和上方的本机小部件

我正在尝试实现以下视图:

在此输入图像描述

如果视图是分层的(从下到上):

  • 第1层:基本的XML布局(图像,按钮等)
  • 第2层:具有透明背景的OpenGL场景,以便我们可以看透
  • 第3层:OpenGL场景中的一些小部件(即TextView)

我已经使用GLSurfaceViewTextureView沿着这些线路,都没有成功.我可以将不透明度设置为曲面,但整个视图变为半透明,并且setZOrderOnTop必须设置为true,因此没有窗口小部件可以存在于顶部.我也试过rajawali3d,结果相同

这可以实现吗?使用股票查看?还是图书馆?

更新:也试过JPCT-AE,结果相同.

更新2:似乎有一种方法UnityPlayer可以在使用a时使用浮动OpenGL视图SurfaceView,但在较新的SDK中不再是这种情况.

transparency android glsurfaceview opengl-es-2.0 textureview

11
推荐指数
0
解决办法
310
查看次数