Я пытаюсь остановить / приостановить работу камеры PreviewView
во время обработки / обнаружения изображения с использованием 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)
}