【问题标题】:How to instantiate CameraControl on Android CameraX (1.0.0-alpha07)如何在 Android CameraX (1.0.0-alpha07) 上实例化 CameraControl
【发布时间】:2019-12-10 00:19:10
【问题描述】:

使用 camerax_version = "1.0.0-alpha06" 时,我可以使用以下方法实例化相机控制器:

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

但是使用 camerax_version = "1.0.0-alpha07",函数 CameraX.getCameraControl 不再被识别。

如何实例化 CameraControl?

【问题讨论】:

    标签: android android-camerax


    【解决方案1】:

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

    (如果您已经使用新 API 配置您的项目,请直接跳到最后一点)

    1. 在您的Application 类中实现CameraXConfig.Provider 并提供默认的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.使用 ProcessCameraProvider 实例将 CameraX UseCases 和 CameraSelector 绑定到生命周期并获取 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 以获取任何其他参考。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-02
      • 1970-01-01
      • 2020-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多