我如何将CameraX与GLSurfaceView一起使用?

问题描述 投票:0回答:1

这基本上是this question的副本,没有得到答复。我知道我必须实现SurfaceProvider才能为SurfaceView或GLSurfaceView提供表面纹理,但是到目前为止,有关如何实现这种表面纹理的详细信息尚未记录。

下面是我编写的代码,很遗憾,该代码不起作用(onFrameAvailable仅被调用一次并显示黑屏:]]

// SurfaceProvider.onSurfaceRequested
override fun onSurfaceRequested(surfaceRequest: SurfaceRequest) {
    Log.e("NM", "surfaceRequestFlag")
    val surfaceTexture = SurfaceTexture(textureArray[0])
    surfaceTexture.setDefaultBufferSize(640, 480)
    val surface = Surface(surfaceTexture)
    val parent = view.parent as ViewGroup
    parent.removeView(view)
    provideSurfaceTexture(surfaceTexture)
    parent.addView(view)
    //updateTransform()

    surfaceRequest?.provideSurface(surface, ContextCompat.getMainExecutor(view.context), Consumer<SurfaceRequest.Result> { result ->
        surface.release()
        surfaceTexture.release()
        Log.e("NM", "SurfaceConsumer")
    })
}

// provideSurfaceTexture
fun provideSurfaceTexture(_surfaceTexture: SurfaceTexture) {
    Log.e("NM", "ProvideSurfaceTexture")
    surfaceTexture = _surfaceTexture
    surfaceTexture?.setOnFrameAvailableListener(this)
}

这基本上是此问题的重复,未回答。我知道我必须实现SurfaceProvider才能为SurfaceView或GLSurfaceView提供表面纹理,但是详细信息...

android kotlin surfaceview glsurfaceview android-camerax
1个回答
0
投票

我也用GlSurfaceView编写CameraX。您是否编写了GLSurfaceview渲染?购买方式。您的surfaceTexture应该从glRender返回

© www.soinside.com 2019 - 2024. All rights reserved.