Я пытаюсь остановить/приостановить просмотр предварительного просмотра камеры во время обработки/обнаружения изображения с помощью Firebase MLKit. Чтобы приостановить просмотр, я звоню
cameraProvider.unbind(previewUseCase)
Это останавливает предварительный просмотр на последнем кадре, но теперь я не знаю, как его возобновить. Я попробовал просто привязать предварительный просмотр еще раз, вот так
cameraProvider.bindToLifecycle(lifecycleOwner, cameraSelector, preview)
Но это приводит к тому, что PreviewView просто отображается белым, как будто его больше нет, и невозможно вернуть его, пока не перезапустите приложение.
То же самое происходит, когда я вызываю unbindAll()
Поэтому мой вопрос заключается в том, как мне приостановить просмотр предварительного просмотра, а затем перезапустить его еще раз позже?
это мой код
fun setupCamera(windowManager: WindowManager, previewView: PreviewView){
_cameraProvider = _cameraProviderFuture.get()
_preview = Preview.Builder()
.setTargetRotation(windowManager.defaultDisplay.rotation)
.build()
_preview.setSurfaceProvider(previewView.previewSurfaceProvider)
_cameraSelector = CameraSelector.Builder()
.requireLensFacing(_requiredCameraLens)
.build()
_imageAnalyzer = ImageAnalysis.Builder()
.setTargetResolution(Size(_imageWidth, _imageHeight))
.setBackpressureStrategy(_imageBackpressureStrategy)
.build()
_imageAnalyzer.setAnalyzer(_imageExecutor,_analyzer)
startPreview()
_cameraProvider.bindToLifecycle(_lifecycleOwner, _cameraSelector, _imageAnalyzer)
}
// Called after image processing has finished
fun startPreview(){
_cameraProvider.bindToLifecycle(_lifecycleOwner, _cameraSelector, _preview)
}
// Called when object is detected in an image
fun stopPreview(){
_cameraProvider.unbind(_preview)
}
Подробнее здесь: https://stackoverflow.com/questions/603 ... x-usecases