Android Composable - 在图像分析器中绘图

问题描述

我是使用 Composable 框架创建 UI 的新手。但是,我试图从一组边界绘制一个矩形。但是,尝试在图像分析器中绘制时出现以下错误

@Composable invocations can only happen from the context of a @Composable function

关于如何解决这个问题有什么想法吗?

我的代码摘录:

@Composable
fun displayCamera() {
    val lifecycleOwner = LocalLifecycleOwner.current
    val context = LocalContext.current
    val cameraProviderFuture = remember { ProcessCameraProvider.getInstance(context) }

    AndroidView(modifier = Modifier.fillMaxSize(),factory = { _context ->
        val previewView = PreviewView(_context)
        val executor = ContextCompat.getMainExecutor(_context)

        cameraProviderFuture.addListener({
            val cameraProvider = cameraProviderFuture.get()

            val preview = Preview.Builder().build().also {
                    it.setSurfaceProvider(previewView.surfaceProvider)
            }

            val cameraSelector = CameraSelector.Builder()
                .requireLensFacing(CameraSelector.LENS_FACING_FRONT)
                .build()

            val analyzer = ImageAnalysis.Builder()
                .build()
                .also {
                    it.setAnalyzer(executor,PersonDetector(_context) Analyzer@{ results ->

                        drawBounds(results)

                        Log.i("MM_Camera","$results")
                    })
                }



            cameraProvider.unbindAll()
            cameraProvider.bindToLifecycle(lifecycleOwner,cameraSelector,preview,analyzer)
        },executor)

        previewView
    })
}

drawBounds 的填充代码

@Composable
fun drawBounds(results: List<Detection>) {
    Canvas1(modifier = Modifier.fillMaxSize()) {
        drawRect(Color.Blue,topLeft = Offset(0f,0f),size = Size(this.size.width,55f))
        drawCircle(Color.Red,center = Offset(50f,200f),radius = 40f)
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)