private val rokidCameraSize = Size(1024, 768)
private val rokidCameraFps = Range(15, 15)
@OptIn(ExperimentalCamera2Interop::class)
private fun bindRokidCamera(
lifecycleOwner: LifecycleOwner,
cameraProvider: ProcessCameraProvider,
previewView: PreviewView
) {
previewView.implementationMode = PreviewView.ImplementationMode.COMPATIBLE
previewView.scaleType = PreviewView.ScaleType.FIT_CENTER
val previewBuilder = Preview.Builder()
.setTargetRotation(previewView.display?.rotation ?: Surface.ROTATION_0)
.setResolutionSelector(
ResolutionSelector.Builder()
.setResolutionStrategy(
ResolutionStrategy(
rokidCameraSize,
ResolutionStrategy.FALLBACK_RULE_CLOSEST_HIGHER_THEN_LOWER
)
)
.build()
)
Camera2Interop.Extender(previewBuilder).setCaptureRequestOption(
CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE,
rokidCameraFps
)
val preview = previewBuilder.build().also {
it.setSurfaceProvider(previewView.surfaceProvider)
}
cameraProvider.unbindAll()
cameraProvider.bindToLifecycle(
lifecycleOwner,
CameraSelector.DEFAULT_BACK_CAMERA,
preview
)
}