Остановка PreviewView CameraX
В моем приложении есть экран который является камерой, суть в том что при нажатии на кнопку сделать фото, PreviewView должно застывать, но иногда выбрасывает из приложения без каких-либо ошибок
запуск камеры
private fun startCamera(){
currentBitmap = null
cameraJob?.cancel()
cameraJob = viewLifecycleOwner.lifecycleScope.launchWhenCreated {
if (cameraProvider == null){
cameraProvider = requireContext().getCameraProvider()
}
cameraProvider?.apply {
restart(
viewLifecycleOwner,
getPreview(viewBinding.camera.preview),
buildCameraSelector(viewBinding.panelForCamera.isBackCamera()),
imageCapture
)
}
}
}
internal fun ProcessCameraProvider.restart(
lifecycleOwner: LifecycleOwner,
preview: Preview,
selector: CameraSelector,
imageCapture: ImageCapture
){
unbindAll()
bindToLifecycle(
lifecycleOwner,
selector,
preview,
imageCapture
)
}
получение фото
private fun updateBitmap(){
viewLifecycleOwner.lifecycleScope.launch {
currentBitmap = imageCapture.takePicture(requireContext())
cameraProvider?.unbindAll()
}
internal suspend fun ImageCapture.takePicture(context: Context): Bitmap =
suspendCoroutine { continuation ->
takePicture(
ContextCompat.getMainExecutor(context),
object : ImageCapture.OnImageCapturedCallback() {
@SuppressLint("UnsafeOptInUsageError")
override fun onCaptureSuccess(imageProxy: ImageProxy) {
imageProxy.useAndConvertToBitmap{
continuation.resume(it)
}
}
}
)
}
}
В чем может быть причина, что даже нет ошибки