Мобильная фотография Для большинства пользователей это стало основным способом делать фотографии. Однако любой пользователь Android знает, что не все фотографии выглядят одинаково: съемка с помощью встроенного приложения камеры отличается от съемки из Instagram, WhatsApp или Snapchat. Эта разница в качестве, резкости и цветопередаче исторически являлась одним из самых больших недостатков Android по сравнению с другими операционными системами.
Чтобы сократить этот разрыв, Google создал CameraX, библиотека совместимости, разработанная таким образом, чтобы любой разработчик мог интегрировать ее. те же возможности, что и у встроенной камеры. для каждого мобильного телефона, без необходимости иметь дело с сотнями моделей, слоев настройки и вариантов аппаратного обеспечения.
В этой статье вы увидите Что такое CameraX?как работает его подход, основанный на сценариях использования, чем он отличается от API Camera2, какое реальное влияние он оказывает на качество фотографий в сторонних приложениях и как это связано с такими понятиями, как вычислительная фотография или формат Ultra HDR. Мы также рассмотрим его эволюцию, ограничения и почему, несмотря на то, что это ключевой компонент, он не может в одиночку решить все проблемы качества в социальных сетях.

Что такое CameraX?
CameraX Это библиотека совместимости с Android, входящая в состав Jetpack, созданная Google для... Максимально упростить разработку приложений, использующих камеру.Главная цель — уменьшить различия в поведении и качестве между собственными приложениями камер от разных производителей и сторонними приложениями, особенно теми, которые мы постоянно используем для социальных сетей, обмена сообщениями или сканирования документов.
В отличие от других низкоуровневых API, таких как Camera2, CameraX работает на более высоком уровне абстракции и предлагает разработчикам Последовательный и простой в использовании APIЭто позволяет скрывать большую часть сложностей, связанных с совместимостью между устройствами. Благодаря этому приложения, такие как банки, социальные сети, приложения для сканирования или редактирования фотографий, могут получать доступ к данным. расширенные режимы камеры (эффект боке, HDR, ночной режим, ретушь лица и т. д.) можно реализовать с помощью нескольких строк кода, вместо разработки индивидуальных решений для каждой модели.
Google описывает CameraX как библиотека совместимости Это позволяет приложениям использовать те же функции, что и встроенное приложение камеры устройства. На практике это означает, что многие функции, ранее доступные только в приложении камеры производителя (например, некоторые портретные режимы или алгоритмы улучшения лица), теперь также могут быть доступны во встроенном приложении камеры устройства. Instagram, WhatsApp, Snapchat или любое другое приложение которая принимает решение интегрировать CameraX и его расширения.
Как работает CameraX?
Одна из ключевых особенностей CameraX заключается в том, что она основана на случаи примененияCameraX — это концепция, упрощающая взаимодействие с камерой. Вместо того чтобы заставлять разработчика вручную управлять соотношением сторон, ориентацией, размером предварительного просмотра или размером конечного изображения, CameraX предоставляет готовые блоки для наиболее распространенных операций.
Основные варианты использования CameraX:
- Предварительный просмотр: Это позволяет в режиме реального времени отображать то, что снимает камера. Surface или в режиме просмотра интерфейса. CameraX автоматически обрабатывает сложные вопросы, такие как соотношение сторон, поворот в зависимости от положения устройства и адаптация к размеру экрана.
- Захват изображения: управляет фотосъемка и хранение фотографий с высоким качеством. Настройте такие параметры, как разрешение, формат вывода или фокус, и вы сможете использовать расширенные возможности процессора изображений мобильного устройства для получения лучших результатов без необходимости тонкой настройки каждой детали разработчиком.
- Захват видео (VideoCapture): Он поддерживает видеозапись, в том числе HDR видео на устройствах, которые это поддерживают. Он обрабатывает кодирование, битрейт, частоту кадров и другие параметры, освобождая разработчика от необходимости учитывать различия между датчиками или производителями.
- Анализ изображения: предоставляет доступ к необработанному потоку кадров для применения обработка в реальном времениалгоритмы компьютерного зрения или модели машинного обучения (например, считыватели QR-кодов, системы распознавания текста или счетчики объектов).
Эти варианты использования могут объединять и связывать с жизненным циклом Компонент (например, Activity или Fragment) может автоматически управлять открытием и закрытием камеры, предотвращая утечки ресурсов или зависания сенсора. Например, можно отображать предварительный просмотр во время анализа в реальном времени и одновременно разрешать фотосъемку при нажатии пользователем кнопки спуска затвора.
Кроме того, CameraX включает в себя дополнительный API для расширения камерыС его помощью разработчик может активировать расширенные функции, реализованные производителем в своей собственной камере, такие как:
- Режим боке или портретный режим: размытие фона для выделения объекта.
- Высокий динамический диапазон (HDR): Улучшенная обработка света и теней, сохранение деталей в сложных областях.
- Ночной режим: Оптимизация съемки в условиях низкой освещенности путем объединения нескольких снимков.
- Ретушь лица: Небольшая корректировка кожи, глаз или тона для получения более привлекательных портретов.
Всё это активируется всего несколькими строками кода, поскольку CameraX отвечает за перевод. эти общие запросы к конкретным функциям каждого производителя, когда они доступны.
Различия между API CameraX и Camera2
До появления CameraX рекомендуемым способом работы с камерой на Android был... API Camera2Этот интерфейс, доступный ещё в более старых версиях системы, был разработан для обеспечения доступа разработчиков. расширенные элементы управления камерой: ручная фокусировка, экспозиция, баланс белого, съемка в формате RAW и другие.
Camera2 разделяет возможности каждого устройства на несколько уровней (устаревший, ограниченный, полный и уровень 3), и в зависимости от уровня, поддерживаемого оборудованием, приложение могло или не могло получить доступ к определенным расширенным функциям. Это обеспечивало огромную гибкость, но также подразумевало определенные ограничения. высокая сложность реализацииособенно если целью было поддержание множества различных моделей.
Главное отличие заключается в том, что Camera2 разработана как слой Низкий уровень ориентирован на точный контрольв то время как CameraX выступает в качестве слоя высокий уровень, который служит мостом Разница между встроенной камерой производителя и сторонними приложениями. Вот некоторые ключевые аспекты этой разницы:
- Абстракция и простота: CameraX значительно сокращает объем необходимого кода. Многие функции, требующие десятков или сотен строк кода в Camera2, решаются в CameraX всего несколькими четко определенными вызовами.
- Совместная работа устройств: CameraX разработан для предоставления последовательное поведение на различных мобильных устройствах. Google поддерживает автоматизированную лабораторию тестирования, которая запускает тесты CameraX на самых разных устройствах и версиях Android для выявления и устранения проблем совместимости.
- Сосредоточьтесь на вариантах использования: В то время как Camera2 требует от разработчика непосредственного управления рабочими процессами, захватом изображений и настройками, CameraX фокусируется на сценариях использования (предварительный просмотр, захват изображений, захват видео, анализ изображений), которые лучше отражают реальные потребности приложений.
- Интеграция с расширениями производителя: CameraX включает в себя API для Расширения что облегчает доступ к тем же функциям, что и встроенное приложение камеры, тогда как в случае с Camera2 это обычно требует пользовательских или нестандартных интеграций.
Однако Camera2 по-прежнему ценна для разработок, требующих профессиональный контроль или для выполнения крайне специфических задач, в то время как CameraX особенно рекомендуется для приложений, стремящихся к балансу между качеством, простотой и совместимостью.
Решает ли CameraX проблему качества в сторонних приложениях?
Часто пользователи задаются вопросом, будет ли CameraX выпущена. окончательное решение Классическая проблема, когда фотографии и видео, загруженные в социальные сети с Android, выглядят хуже, чем на других системах, — это совсем другая история. В реальности все сложнее: CameraX Это значительно улучшает доступ к функциям камеры.Но система не контролирует весь процесс до тех пор, пока изображение не попадет в социальную сеть.
С одной стороны, CameraX позволяет сторонним приложениям осуществлять захват изображения с помощью лучшие алгоритмы HDR, ночной съемки, эффекта боке или Ultra HDR когда это поддерживается оборудованием. Это также позволяет лучше использовать процессор обработки изображений устройства и уменьшает различия по сравнению со стандартным приложением камеры. Само по себе это уже представляет собой значительный шаг вперед в повседневном опыте фотосъемки.
Однако конечное качество, которое вы видите в Instagram, WhatsApp или любой другой социальной сети, также зависит от других ключевых факторов:
- Сжатие, применяемое приложением: Многие платформы агрессивно уменьшают размер фотографий и видео, чтобы сэкономить данные и ускорить загрузку. Такое сжатие может привести к потере некоторых деталей, которые удалось запечатлеть с помощью CameraX.
- Внутренние алгоритмы обработки: Каждое приложение может применять собственные фильтры, масштабирование и корректировки перед загрузкой изображения, что влияет на конечный результат.
- Различия в реализации между системами: Одно и то же приложение не всегда работает одинаково на всех операционных системах. На Android огромное разнообразие устройств вынуждает приложения использовать более универсальные стратегии, которые во многих случаях приводят к снижению качества.
Вот почему, несмотря на CameraX Это позволяет приложениям быть более полными с точки зрения функций фотосъемки.Это не полностью устраняет проблемы сжатия, масштабирования или стратегии загрузки, которые выбирает каждая платформа. Другими словами, CameraX — это очень важный шаг на пути к значительному улучшению качества фотографий, сделанных с помощью сторонних приложений, но Конечное качество по-прежнему будет зависеть от того, как каждый разработчик будет использовать этот контент..
Преимущества CameraX для пользователей
Для тех, кто просто хочет делать фотографии и видео без лишних сложностей, внедрение CameraX в популярные приложения означает ряд преимуществ. прямые преимущества В день в день.
Во-первых, приложения могут использовать преимущества та же технология обработки изображений Встроенное приложение камеры телефона использует алгоритмы для подавления шума, улучшения детализации, регулировки контраста и цвета, а также специализированные режимы для ночной съемки, портретов и пейзажей. Это уменьшает ощущение, что «только приложение камеры телефона делает хорошие фотографии».
Во-вторых, CameraX позволяет делать снимки с помощью больший динамический диапазон Именно здесь вступает в игру поддержка HDR и Ultra HDR. Это означает, что в сценах с интенсивными светлыми участками и глубокими тенями сохраняется больше деталей, что высоко ценится в современной мобильной фотографии.
Кроме того, поддержка HDR-видео и одновременная съемка. Это открывает двери для новых возможностей, таких как одновременная запись с помощью передней и задней камер или запись видео с более насыщенной и яркой цветопередачей, при условии совместимости панели и приложения для просмотра.
Наконец, стабильная работа камеры в разных приложениях снижает уровень разочарования: меньше сбоев камеры, меньше зависаний, меньше проблем с ориентацией и меньше искаженных предварительных просмотров. Все это возможно благодаря автоматическому тестированию CameraX компанией Google на большом количестве устройств, выявлению и исправлению ошибок совместимости.
Как внедрить CameraX в приложение
Для разработчиков, желающих интегрировать CameraX, базовый процесс внедрения основан на нескольких четко определенных шагах, без необходимости вдаваться в более сложные детали Camera2.
- Добавьте зависимости к проекту: в архиве
build.gradleЗависимости ядро CameraX, Жизненный цикл а также конкретные модули для необходимых сценариев использования (Preview, ImageCapture, VideoCapture, ImageAnalysis, Extensions). - Установите разрешения: Приложение должно запрашивать и управлять разрешениями на доступ к камере, а также, если ведется видеозапись со звуком, разрешением на запись звука. CameraX хорошо интегрируется с API управления разрешениями во время выполнения.
- Выберите необходимые варианты использования: Определяется, будет ли приложение использовать только предварительный просмотр, или также фотосъемку, видеозапись или анализ изображений. Этот выбор делается в зависимости от типа приложения: социальные сети, банковское приложение, приложение для чтения документов, сканирование штрих-кодов и т. д.
- Связь камеры с жизненным циклом: Компоненты жизненного цикла AndroidX используются для того, чтобы CameraX знала, когда запускать или останавливать процесс работы с камерой в зависимости от состояния Activity или Fragment, предотвращая утечки памяти и сбои при повороте экрана или выходе из приложения.
Благодаря его Модульная конструкцияCameraX позволяет разработчикам сосредоточиться на том, что должно делать их приложение (например, сканировать документ, делать селфи, записывать короткое видео), вместо того чтобы разбираться во внутренних деталях каждого устройства. Во многих случаях это именно то, что нужно. Рекомендуемый вариант для новых приложений тем, кому необходимо надежно использовать камеру на самых разных мобильных телефонах.
Какие устройства поддерживает CameraX?
CameraX разработан для работы на устройства с Android 5.0 (уровень API 21) и более поздними версиямиЭто обеспечивает очень широкий охват рынка мобильных устройств Android, что делает его весьма привлекательным решением для разработчиков, стремящихся охватить максимально возможное количество пользователей.
Однако доступность некоторых расширенных функций всегда будет зависеть от конкретное оборудование Для таких функций, как HDR, ночной режим, улучшенное размытие фона (боке) и 10-битная запись, требуются совместимые датчики изображения и процессоры. Библиотека определяет доступные возможности и корректирует поведение, чтобы предотвратить ошибки или непостоянство результатов.
Google поддерживает автоматизированная испытательная лаборатория Для CameraX, которая оценивает свою производительность на разных устройствах, марках и версиях Android. Это помогает гарантировать, что, несмотря на присущую платформе фрагментацию, Основные характеристики работы камеры остаются стабильными и предсказуемыми. между различными терминалами.
Эволюция CameraX: новые функции и поддержка Ultra HDR.
CameraX — это не статичная библиотека; Google периодически обновляет её, добавляя новые функции. новые функции вычислительной фотографии и улучшить его интеграцию с экосистемой Android. Например, версия 1.3 В ней появилась поддержка одновременной съемки с разных камер, записи HDR-видео и большего количества эффектов в реальном времени; с тех пор Google продолжает расширять ее возможности, включая поддержку таких форматов, как Ultra HDR.
Среди улучшений, внесенных в последние версии, особенно выделяются следующие:
- Поддержка одновременных камер: Возможность одновременного использования двух камер на совместимых устройствах, например, фронтальной и тыловой камеры, или двух тыловых камер с разными объективами. Это позволяет создавать более креативные сценарии записи, такие как реакции в реальном времени или плавные смены сцен.
- Запись HDR-видео: Возможность записывать видео с более широким динамическим диапазоном, обеспечивая большую детализацию в светлых и темных участках, а также более насыщенную цветовую палитру в сочетании с совместимыми дисплеями.
- Больше эффектов в реальном времени: Усовершенствования в конвейере анализа изображений, которые упрощают применение размытия, цветокоррекции или креативных фильтров во время съемки без необходимости ресурсоемкой внешней обработки.
- Совместимость с изображениями Ultra HDR: Постепенная интеграция формата Ultra HDR, позволяющего получать фотографии с расширенным диапазоном яркости и более насыщенными цветами, приближая результат к тому, как человеческий глаз воспринимает сцену.
El Формат Ультра HDR Это одно из самых впечатляющих последних достижений в мобильной фотографии. Хотя многие камеры уже использовали технологии HDR на программном уровне, конечный результат всё ещё оставался стандартным (SDR) изображением. С Ultra HDR фотографии включают дополнительную информацию о яркости и цвете, что на совместимых дисплеях приводит к более реалистичным изображениям с большей глубиной резкости.
В данном случае CameraX играет важную роль, поскольку именно она позволяет... любое приложение Можно воспользоваться преимуществами этого формата, не ограничиваясь только приложением камеры от производителя. Это выгодно не только социальным сетям и мессенджерам, но и другим приложениям для фотосъемки, редактирования или захвата контента, которые хотят предложить подобные возможности. более насыщенное визуальное восприятие.
Поддержка Ultra HDR в CameraX помогает Android поддерживать высокие темпы инноваций в мобильной фотографии, согласовывая потенциал оборудования с возможностями, которые приложения могут легко предложить пользователям.
В целом, CameraX зарекомендовала себя как одна из ведущих компаний. Ключевые инструменты для настоящего и будущего мобильной фотографии на Android.Благодаря возможности интегрировать расширенные функции встроенной камеры в сторонние приложения, уменьшить фрагментацию и упростить внедрение таких технологий, как Ultra HDR и HDR-видео, все больше разработчиков выбирают эту библиотеку для создания высококачественных визуальных материалов. Для пользователей это означает более качественные и согласованные фотографии и видео, которые лучше используют потенциал их смартфона, независимо от используемого приложения.
