CameraX 1.5: Как обеспечить совместимость функций камеры в Android-приложениях
CameraX 1.5 упрощает разработку Android-приложений для камеры с новым API Feature Group. Узнайте, как гарантировать поддержку комбинаций HDR, 60 FPS и стабилизации для создания надежных и мощных приложений.
74 открытий1К показов
Эта статья — перевод оригинального материала о новых возможностях CameraX 1.5, адаптированный для русскоязычной аудитории с сохранением смысла и стиля оригинала.
Современные приложения для камеры должны сочетать мощные функции: пользователи хотят снимать видео в HDR, с частотой 60 кадров в секунду и стабилизацией изображения — и всё это одновременно. Но как разработчику гарантировать, что устройство поддерживает такую комбинацию?
Ранее совмещение нескольких функций было рискованным: проверка поддержки каждой функции по отдельности не гарантировала их совместной работы. Это могло привести к нестабильной работе камеры или её полному сбою. Чтобы избежать проблем, разработчики ограничивали функциональность, лишая пользователей с мощными устройствами, такими как Pixel 10 Pro, полноценного опыта.
CameraX 1.5 решает эту проблему с помощью нового API Feature Group. Теперь вы можете заранее проверить поддержку комбинации функций или задать приоритеты, а библиотека сама подберёт оптимальную конфигурацию для устройства.
Что такое CameraX?
CameraX — это библиотека Jetpack, которая упрощает разработку приложений для камеры на Android. Она предлагает удобный и единообразный API, совместимый с большинством устройств, начиная с Android 6.0 (API level 23). Для новичков рекомендуем изучить официальную документацию и пройти практический codelab.
Возможности API Feature Group
Новый API позволяет создавать продвинутые приложения для камеры, избегая проблем с совместимостью. Вы сможете:
- Создавать адаптивные интерфейсы: Динамически включать или отключать настройки в зависимости от возможностей устройства. Например, если пользователь включает HDR, опция 60 FPS автоматически станет недоступной, если комбинация не поддерживается.
- Реализовать режим “Максимальное качество”: Укажите желаемые функции с приоритетами, и CameraX выберет лучшую комбинацию, поддерживаемую устройством, без сложной логики.
- Избежать сбоев: Проверка поддержки комбинаций заранее предотвращает ошибки при настройке камеры, обеспечивая стабильную работу.
Как это работает: основные компоненты
API построен на обновленных классах SessionConfig и CameraInfo.
- GroupableFeature: Включает набор функций, таких как HDR_HLG10, FPS_60, PREVIEW_STABILIZATION и IMAGE_ULTRA_HDR. Список пока ограничен из-за вычислительных требований, но будет расширен в следующих версиях.
- Новые параметры SessionConfig:
requiredFeatureGroup: Для обязательных функций. Если комбинация не поддерживается, вызов bindToLifecycle завершится ошибкойIllegalArgumentException.preferredFeatureGroup:Для необязательных функций. Укажите список с приоритетами, и CameraX выберет лучшую комбинацию. - requiredFeatureGroup: Для обязательных функций. Если комбинация не поддерживается, вызов bindToLifecycle завершится ошибкой IllegalArgumentException.
- preferredFeatureGroup: Для необязательных функций. Укажите список с приоритетами, и CameraX выберет лучшую комбинацию.
- CameraInfo#isFeatureGroupSupported(): Метод для проверки поддержки комбинации функций. Передайте
SessionConfig, чтобы узнать, поддерживается ли набор функций, и настройте интерфейс соответственно.
Практическое применение
Рассмотрим два сценария использования API.
Сценарий 1: Режим "Максимальное качество"
Чтобы автоматически включить лучшие функции, задайте список приоритетов в preferredFeatureGroup. Например, приоритет: HDR, затем 60 FPS, затем стабилизация. CameraX сам выберет оптимальную комбинацию.
CameraX проверит комбинации в порядке приоритета, выбрав первую поддерживаемую:
- HDR + 60 FPS + Стабилизация
- HDR + 60 FPS
- HDR + Стабилизация
- HDR
- 60 FPS + Стабилизация
- 60 FPS
- Стабилизация
- Ничего
Сценарий 2: Адаптивный интерфейс
Для интерфейса, реагирующего на выбор пользователя, проверяйте неподдерживаемые комбинации:
Интегрируйте логику в интерфейс для отключения неподдерживаемых опций и привязки стабильной конфигурации:
Ознакомьтесь с тестовым приложением CameraX для примера реализации (не для продакшена).
API Feature Group устраняет неопределенность при работе с продвинутыми функциями камеры, позволяя создавать надежные приложения. Он доступен как экспериментальный в CameraX 1.5 и станет стабильным в версии 1.6 с дополнительными улучшениями.
74 открытий1К показов





