Увеличение с помощью телеобъектива с камерой

#android #zooming #android-camerax #lenses

Вопрос:

В моем приложении масштабирование ограничено основным объективом, а не телеобъективом устройства(если он есть).

Телеобъектив может быть предоставлен любым производителем; Я не хочу реализовывать API, специфичный для устройства производителя, для доступа к телеобъективу или широкоугольному объективу.

Это приводит к менее оптимальным изображениям, и приложение не может увеличить масштаб дальше, чем пределы увеличения основной камеры.

Как использовать телеобъектив (и широкоугольный объектив, если это возможно) для увеличения масштаба в моем приложении?

Спасибо.

Ответ №1:

CameraX просто не способен предоставить вам камеру/объектив, которые вы хотите/в которых нуждаетесь. Вы можете установить минимальный доступный уровень масштабирования и надеяться на лучшее. Вы можете попробовать Camera2, но это также не гарантировано.
Теоретически, если вы установите коэффициент масштабирования ниже 1,0 f, это должно заставить CameraX использовать широкоугольную камеру. На самом деле, я никогда не видел ни одного устройства, кроме Pixel 6, поддерживающего это. Даже Google Pixel не способен реализовать необходимые функции для поддержки сторонних приложений для камер с помощью CameraX. В случае, если вы хотите проверить, вот как вы можете установить минимальный доступный зум: на большинстве устройств вы увидите, что минимальный зум составляет 1,0 f, в то время как в пикселе 6 он составлял ~0,7 f.

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