Как изменить облицовку объектива CameraX во время записи - PullRequest
0 голосов
/ 26 сентября 2019

Невозможно переключить объектив CameraX во время записи.Возможно ли это сделать с помощью библиотеки JetX Jetpack?

Я могу переключать линзу, когда запись не ведется, но затем мне нужно отменить привязку всех () и выполнить повторную установку, чтобы во время записи это не сработало.

override fun onCreate(savedInstanceState: Bundle?) {
    iv_switch_lens?.setOnClickListener {
        lensFacing = if (CameraX.LensFacing.FRONT == lensFacing) {
            CameraX.LensFacing.BACK
        } else {
            CameraX.LensFacing.FRONT
        }
        try {
            CameraX.getCameraWithLensFacing(lensFacing)
            CameraX.unbindAll()
            startCamera()
        } catch (exc: Exception) {
        }
    }
}

private fun startCamera() {
    val metrics = DisplayMetrics().also { viewFinder.display.getRealMetrics(it) }
    val screenAspectRatio = Rational(metrics.widthPixels, metrics.heightPixels)
    Log.d(TAG, "Screen metrics: ${metrics.widthPixels} x ${metrics.heightPixels}")

    val viewFinderConfig = PreviewConfig.Builder().apply {
        setLensFacing(lensFacing)
        setTargetAspectRatio(screenAspectRatio)
        setTargetRotation(viewFinder.display.rotation)
    }.build()

    preview = AutoFitPreviewBuilder.build(viewFinderConfig, viewFinder)
    val videoCaptureConfig = VideoCaptureConfig.Builder().apply {
        setTargetAspectRatio(screenAspectRatio)
        setLensFacing(lensFacing)
        setTargetRotation(viewFinder.display.rotation)
    }.build()
    videoCapture = VideoCapture(videoCaptureConfig)
    fab_take_action.setSafeOnClickListener {
        cameraViewModel.onActionClicked()
    }
    CameraX.bindToLifecycle(
            this, preview, videoCapture)
}
...