AndroidView(modifier = Modifier.fillMaxSize(),factory = {
PreviewView(it).apply {
this.controller = controller
controller.bindToLifecycle(lifecycleOwner)
implementationMode = PreviewView.ImplementationMode.COMPATIBLE
setOnTouchListener { _, event ->
val focusX = event.x // Map coordinates to focus points
val focusY = event.y
controller.isTapToFocusEnabled(focusX,focusY) // Assuming focus control API is available
true // Consume touch event
}
}
})
错误
Too many arguments for public open fun isTapToFocusEnabled(): Boolean defined in androidx.camera.view.LifecycleCameraController
相机可以工作,但我想添加触摸对焦,但我遇到了一个问题,我找不到解决方案,而且我在使用 Jetpack Compose 查找资源时遇到问题。我删除了 focusX、focusY 并运行了它。我的设备(Redmi Note 11 Pro、Android11)
根据
CameraController.isTapToFocusEnabled()
的文档,它不接受任何参数,只是返回是否启用了点击聚焦功能,即它不用于显式触发您似乎正在考虑的点击聚焦功能。
https://developer.android.com/reference/androidx/camera/view/CameraController#isTapToFocusEnabled()
因此,
controller.isTapToFocusEnabled(focusX,focusY)
会导致错误,而controller.isTapToFocusEnabled()
应该可以正常工作。
文档还提到它应该默认启用(您可以使用
CameraController.setTapToFocusEnabled(boolean)
API 禁用/重新启用它)。因此,该功能已默认启用,您无需执行任何进一步操作即可确保根据点击事件进行对焦。
如果您想知道点击是否已应用或成功,您可以观察 CameraController#getTapToFocusState() API 返回的 LiveData。正如该文档所解释的,它会告诉您点击对焦是否已开始、完成或失败。您具体如何使用该信息将取决于您的具体要求。例如,您可以简单地通过 Toast 消息通知用户,或者在点击事件的位置进行一些 UI 更改。