У меня есть Android camera2 API Предварительный просмотр работает нормально в Kotlin, используя suspendCoroutine для всех настроек поверхности и обратных вызовов.Но когда я пытаюсь сделать снимок через 5 секунд после запуска приложения (TEMPLATE_STILL_CAPTURE, YUV_420_888, наименьшее разрешение) по какой-то причине все это на мгновение полностью становится черным (даже в окне предварительного просмотра), и я получаю изображение YUV, полное 0-светлые пиксели.
private suspend fun captureStill(): Image = suspendCoroutine { cont ->
val captureRequestStill = cameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE)
captureRequestStill.addTarget(imageReaderYUV.surface)
imageReaderYUV.setOnImageAvailableListener({ cont.resume(imageReaderYUV.acquireLatestImage()) }, backgroundHandler)
cameraCaptureSession.capture(captureRequestStill.build(), null, backgroundHandler)
}
Я что-то упустил?Я искажал некоторые аспекты установки ранее?Не подходит ли setOnImageAvailableListener для захвата изображения YUV?
См. Полный танец настройки в одной функции с поддержкой приостановки