如何在Android CameraX(1.0.0-alpha07)上实例化CameraControl

时间:2019-12-06 16:54:13

标签: android android-camerax

当使用camerax_version =“ 1.0.0-alpha06”时,我可以使用以下命令实例化摄像头控制器:

CameraControl cameraControl = CameraX.getCameraControl(CameraX.LensFacing.BACK);

但是随着camerax_version =“ 1.0.0-alpha07”,函数CameraX.getCameraControl不再被识别。

如何实例化CameraControl?

1 个答案:

答案 0 :(得分:1)

版本1.0.0-alpha07改变了CameraX初始化的方式。为了获得一个CameraControl对象,您必须首先获得一个Camera对象。 CameraProcessCameraProvider.bindToLifecycle()方法返回。基本上,您需要做的是:

(如果您已经使用新的API配置了项目,只需跳到最后一点)

  1. 在您的CameraXConfig.Provider类中实施Application,并提供默认的Camera2Config值:
class MyApp : Application(), CameraXConfig.Provider {
    override fun getCameraXConfig(): CameraXConfig = Camera2Config.defaultConfig(this)
}
  1. 获取ProcessCameraProvider的实例:
val cameraProviderFuture = ProcessCameraProvider.getInstance(context)
cameraProviderFuture.addListener(Runnable {
    cameraProvider = cameraProviderFuture.get()
    ...
}, ContextCompat.getMainExecutor(context))

3。使用UseCase实例将CameraX CameraSelectorProcessCameraProvider绑定到生命周期,并获得CameraCameraControl对象:

// CameraSelector is also a new thing
val cameraSelector = CameraSelector.Builder().apply {
    requireLensFacing(lensFacing)
}.build()

val preview = ...
val imageCapture = ...
val imageAnalysis = ...

val camera = cameraProvider.bindToLifecycle(lifecycleOwner, cameraSelector, preview, imageCapture, imageAnalysis)
val cameraControl = camera.cameraControl

检查Camera-Core Version 1.0.0-alpha07 API changes是否有其他参考。