我正在使用下面的代码从camerax相机捕获,
imageCapture.takePicture(outputOptions, cameraExecutor,// ContextCompat.getMainExecutor(cntx),
j0pj023g1#
建议将cameraX与替代线程一起使用。试着像这样使用它:
private fun startCamera() { binding.previewView.visibility = View.VISIBLE cameraExecutor = Executors.newSingleThreadExecutor() val cameraProviderFuture = ProcessCameraProvider.getInstance(requireContext()) cameraProviderFuture.addListener({ cameraProvider = cameraProviderFuture.get() val preview = Preview.Builder() .build() .also { it.setSurfaceProvider(binding.previewView.surfaceProvider) } val imageAnalyzer = ImageAnalysis.Builder() .setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST) .build() .also { it.setAnalyzer(cameraExecutor, CodeAnalyser(this@HomeFragment)) } val cameraSelector = CameraSelector.DEFAULT_BACK_CAMERA try { cameraProvider.unbindAll() cameraProvider.bindToLifecycle( this, cameraSelector, preview, imageAnalyzer ) } catch (exc: Exception) { exc.printStackTrace() } }, ContextCompat.getMainExecutor(requireContext())) }
通过这样做,您的主线程不会被持续的图像处理阻塞。这是一个假设。您没有共享足够的代码让我专门诊断您的问题。
1条答案
按热度按时间j0pj023g1#
建议将cameraX与替代线程一起使用。
试着像这样使用它:
通过这样做,您的主线程不会被持续的图像处理阻塞。
这是一个假设。您没有共享足够的代码让我专门诊断您的问题。