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

How to instantiate CameraControl on Android CameraX (1.0.0-alpha07)

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

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

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

如何实例化 CameraControl?

版本 1.0.0-alpha07 对 CameraX 的初始化方式进行了大量更改。为了得到一个CameraControl对象,你必须先得到一个Camera对象。 CameraProcessCameraProvider.bindToLifecycle() 方法返回。基本上你需要做的是:

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

  1. 在您的 Application class 中实施 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 是否有任何其他参考资料。