使用 CameraX 使用长焦镜头变焦

Zoom with the telephoto lens with CameraX

在我的应用程序中,变焦仅限于主镜头而不是设备的长焦镜头(如果有的话)。

长焦镜头可以由任何制造商提供;我不希望实施特定于制造商设备的 API 来访问远摄或广角镜头。

这会导致图片效果欠佳,并且应用无法缩放到超过主相机的缩放限制。

如何使用长焦镜头(如果可能,也使用广角镜头)来放大我的应用程序?

谢谢。

CameraX 根本无法为您提供 camera/lens 您 wish/need。您可以将缩放级别设置为可用的最小级别,并希望获得最佳效果。您可以尝试 Camera2,但也不能保证。
理论上,如果将缩放比例设置为低于 1.0f,这应该会使 cameraX 使用广角相机。实际上,除了 Pixel 6 之外,我从未见过任何设备支持此功能。即使 Google Pixel 也无法实现必要的功能来支持带有 CameraX 的第 3 方相机应用程序。如果您想查看,这是设置最小可用缩放的方法:在大多数设备中,您会看到最小缩放为 1.0f,而在 Pixel 6 中为 ~0.7f。

val maxAvailableZoom = camera?.cameraInfo?.zoomState?.value?.maxZoomRatio
val minAvailableZoom = camera?.cameraInfo?.zoomState?.value?.minZoomRatio ?: 1f
camera?.cameraControl?.setZoomRatio(minAvailableZoom)