我有下面的AndroidView显示从背面相机的看法.“工厂”例程运行一次就可以了。当缩放值更改但相机视图不反映更新的缩放时,将调用“update”。
val zoom: MutableState<Float> = remember { mutableStateOf(2f) }
. . .
AndroidView(
factory = {context ->
val previewView = PreviewView(context)
val preview = Preview.Builder().build()
val selector = CameraSelector.Builder()
.requireLensFacing(CameraSelector.LENS_FACING_BACK)
.build()
preview.setSurfaceProvider(previewView.surfaceProvider)
val cam = cameraProviderFuture.get().bindToLifecycle(
lifecycleOwner,
selector,
preview,
)
cam.cameraControl.setZoomRatio(zoom)
println("factory view " + previewView)
previewView
},
update = { view ->
print("preview view " +view)
view.controller?.cameraControl?.setZoomRatio(zoom)
println("updated zoom " + zoom)
},
modifier = modifier
)
访问相机控件以设置变焦的正确方法是什么?
1条答案
按热度按时间enyaitl31#
将缩放级别存储为状态,然后当状态值更改时,您将获得重新合成。
从您的代码中,不可能看到您最初从哪里获得缩放级别,或者您如何收听它的变化。
您将需要某种侦听器,以便在用户更改缩放值时更新缩放值。