Android Composable - рисование в анализаторе изображений
Я новичок в использовании Composable framework для создания пользовательского интерфейса. Однако я пытаюсь нарисовать прямоугольник из набора границ. Однако при попытке рисования в анализаторе изображений я получаю следующую ошибку:
@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)
}
}