1.0.0-alpha07 版本大大改变了 CameraX 的初始化方式。为了获得CameraControl 对象,您必须首先获得Camera 对象。 Camera 从 ProcessCameraProvider.bindToLifecycle() 方法返回。基本上你需要做的是:
(如果您已经使用新 API 配置您的项目,请直接跳到最后一点)
- 在您的
Application 类中实现CameraXConfig.Provider 并提供默认的Camera2Config 值:
class MyApp : Application(), CameraXConfig.Provider {
override fun getCameraXConfig(): CameraXConfig = Camera2Config.defaultConfig(this)
}
- 获取
ProcessCameraProvider的实例:
val cameraProviderFuture = ProcessCameraProvider.getInstance(context)
cameraProviderFuture.addListener(Runnable {
cameraProvider = cameraProviderFuture.get()
...
}, ContextCompat.getMainExecutor(context))
3.使用 ProcessCameraProvider 实例将 CameraX UseCases 和 CameraSelector 绑定到生命周期并获取 Camera 和 CameraControl 对象:
// 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 以获取任何其他参考。