当使用camerax_version =“ 1.0.0-alpha06”时,我可以使用以下命令实例化摄像头控制器:
CameraControl cameraControl = CameraX.getCameraControl(CameraX.LensFacing.BACK);
但是随着camerax_version =“ 1.0.0-alpha07”,函数CameraX.getCameraControl
不再被识别。
如何实例化CameraControl?
答案 0 :(得分:1)
版本1.0.0-alpha07
改变了CameraX初始化的方式。为了获得一个CameraControl
对象,您必须首先获得一个Camera
对象。 Camera
从ProcessCameraProvider.bindToLifecycle()
方法返回。基本上,您需要做的是:
(如果您已经使用新的API配置了项目,只需跳到最后一点)
CameraXConfig.Provider
类中实施Application
,并提供默认的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。使用UseCase
实例将CameraX CameraSelector
和ProcessCameraProvider
绑定到生命周期,并获得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