这基本上是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提供表面纹理,但是详细信息...
我也用GlSurfaceView编写CameraX。您是否编写了GLSurfaceview渲染?购买方式。您的surfaceTexture应该从glRender返回