CameraX

CameraX – это дополнение к Jetpack, которое упрощает добавление функций камеры в приложение. Библиотека содержит ряд исправлений и обходных решений, которые помогают обеспечить единообразие работы разработчиков на многих устройствах.

В этой таблице перечислены все артефакты в группе androidx.camera.

Объект Основная версия Релиз-кандидат Бета-версия Альфа-версия
camera-camera2 1.6.2 1.7.0-rc01 - -
camera-core 1.6.2 1.7.0-rc01 - -
camera-compose 1.6.2 1.7.0-rc01 - -
camera-effects 1.6.2 1.7.0-rc01 - -
camera-extensions 1.6.2 1.7.0-rc01 - -
camera-feature-combination-query - - - 1.5.0-alpha06
camera-feature-combination-query-play-services - - - 1.5.0-alpha06
camera-lifecycle 1.6.2 1.7.0-rc01 - -
camera-mlkit-vision 1.6.2 1.7.0-rc01 - -
camera-view 1.6.2 1.7.0-rc01 - -
camera-viewfinder - - 1.3.0-beta02 1.4.0-alpha07
camera-video 1.6.2 1.7.0-rc01 - -
Последнее обновление библиотеки: 21 октября 2026 г.

Тестирование устройства

Мы тестируем CameraX на множестве устройств в нашей лаборатории. Список устройств, которые сейчас находятся в лаборатории, можно посмотреть на странице Устройства, протестированные в лаборатории CameraX.

Объявление зависимостей

Чтобы добавить зависимость от CameraX, необходимо добавить в проект репозиторий Google Maven. Подробную информацию можно найти в статье Репозиторий Google Maven.

Добавьте зависимости для нужных артефактов в файл build.gradle приложения или модуля:

Классный

dependencies {
  // CameraX core library using the camera2 implementation
  def camerax_version = "1.7.0-alpha03"
  // The following line is optional, as the core library is included indirectly by camera-camera2
  implementation "androidx.camera:camera-core:${camerax_version}"
  implementation "androidx.camera:camera-camera2:${camerax_version}"
  // If you want to additionally use the CameraX Lifecycle library
  implementation "androidx.camera:camera-lifecycle:${camerax_version}"
  // If you want to additionally use the CameraX VideoCapture library
  implementation "androidx.camera:camera-video:${camerax_version}"
  // If you want to additionally use the CameraX View class
  implementation "androidx.camera:camera-view:${camerax_version}"
  // If you want to additionally add CameraX ML Kit Vision Integration
  implementation "androidx.camera:camera-mlkit-vision:${camerax_version}"
  // If you want to additionally use the CameraX Extensions library
  implementation "androidx.camera:camera-extensions:${camerax_version}"
}

Котлин

dependencies {
    // CameraX core library using the camera2 implementation
    val camerax_version = "1.7.0-alpha03"
    // The following line is optional, as the core library is included indirectly by camera-camera2
    implementation("androidx.camera:camera-core:${camerax_version}")
    implementation("androidx.camera:camera-camera2:${camerax_version}")
    // If you want to additionally use the CameraX Lifecycle library
    implementation("androidx.camera:camera-lifecycle:${camerax_version}")
    // If you want to additionally use the CameraX VideoCapture library
    implementation("androidx.camera:camera-video:${camerax_version}")
    // If you want to additionally use the CameraX View class
    implementation("androidx.camera:camera-view:${camerax_version}")
    // If you want to additionally add CameraX ML Kit Vision Integration
    implementation("androidx.camera:camera-mlkit-vision:${camerax_version}")
    // If you want to additionally use the CameraX Extensions library
    implementation("androidx.camera:camera-extensions:${camerax_version}")
}

Отзыв

Ваши отзывы помогают нам улучшать Jetpack. Если вы обнаружите новые проблемы или у вас появятся идеи по улучшению этой библиотеки, сообщите нам. Прежде чем сообщать о новых ошибках, изучите уже добавленные. Вы можете проголосовать за существующую проблему, нажав кнопку со звездочкой.

Создать новую проблему

Дополнительную информацию можно найти в документации по системе отслеживания ошибок.

Camera Viewfinder Compose версии 1.0

Версия 1.0.0-alpha02

12 июня 2024 г.

Выпущены данные "androidx.camera:camera-viewfinder-compose:1.0.0-alpha02". Версия 1.0.0-alpha02 содержит эти коммиты.

Версия 1.0.0-alpha01

14 мая 2024 г.

Выпущены данные "androidx.camera:camera-viewfinder-compose:1.0.0-alpha01". Версия 1.0.0-alpha01 содержит эти коммиты.

Новые функции

  • Новая библиотека. В этой библиотеке есть нативная composable-функция Viewfinder, которую можно использовать с CameraX и Camera2. Составной видоискатель поддерживает различные соотношения сторон и обработку событий касания.

Видоискатель камеры, версия 1.4

Версия 1.4.0-alpha07

12 июня 2024 г.

Данные "androidx.camera:camera-viewfinder:1.4.0-alpha07" и "androidx.camera:camera-viewfinder-core:1.4.0-alpha07" опубликованы. Версия 1.4.0-alpha07 содержит эти коммиты.

Версия 1.4.0-alpha06

14 мая 2024 г.

Данные "androidx.camera:camera-viewfinder:1.4.0-alpha06" и "androidx.camera:camera-viewfinder-core:1.4.0-alpha06" опубликованы. Версия 1.4.0-alpha06 содержит эти коммиты.

Изменения в API

  • Переименованы перечисления ImplementationMode в Viewfinder, чтобы лучше отразить базовые реализации, и добавлены фиксированные константы для TransformationInfo.sourceRotation. (Ic6149)
  • Добавлен класс ZoomGestureDetector.ZoomEvent, который инкапсулирует состояния жеста масштабирования. (I84cdf)

Версия 1.7

Версия 1.7.0-rc01

21 октября 2026 г.

Выпущены данные "androidx.camera:camera-*:1.7.0-rc01". Версия 1.7.0-rc01 содержит эти коммиты.

Изменения в API

  • Интерфейсы UseCaseCamera2Interop, ImageCaptureCamera2Interop, SessionConfigCamera2Interop и CameraControlCamera2Interop преобразованы в абстрактные классы. (If654e)
  • Исправлена проблема с неоднозначностью Camera2Interop V2 (I1bbe5).

Исправление ошибок

  • Исправлен сбой на уровне ОС SIGSEGV в потоке CameraX OpenGL, когда SurfaceProcessor освобождал входной SurfaceTexture, чей SurfaceRequest был удален сборщиком мусора до завершения. (I76f73, b/563673593)
  • Исправлена утечка Surface и сбой на уровне ОС OpenGL, которые могли происходить во время сборки мусора, когда исполнитель CameraEffect или HandlerThread завершал работу до закрытия SurfaceOutput эффекта. (Ifcc19, b/558819242)
  • Улучшено поведение функции "Усиление при слабом освещении". Теперь при включении этой функции или фонарика применяется правило "последняя настройка имеет приоритет", то есть включение одной функции автоматически отключает другую вместо отклонения запроса. Кроме того, теперь при фотосъемке в режиме "Слабое освещение" можно использовать вспышку. (Ie583f)
  • Зависимость androidx.lifecycle:lifecycle-runtime обновлена до версии 2.10.0. Эта версия необходима для запуска встроенных проверок времени выполнения жизненного цикла с AGP версии 9.5.0-alpha04 или более поздней. (I99bfd, b/556807521)
  • Поддержка получения CameraSelector на физических камерах из CameraInfo.getPhysicalCameraInfos() и привязки UseCases к физическим камерам. При запросе CameraInfo с физическим CameraSelector теперь возвращается физический CameraInfo вместо логического CameraInfo. (Ibe7f2)
  • В Javadoc для OutputOptions.Builder.setLocation уточнено, что в метаданных видео хранятся только широта и долгота. (I77d3b, b/551348846)
  • Исправлена ошибка в ImageAnalysis, из-за которой динамическое изменение поворота выходного изображения или отмена привязки варианта использования могли привести к утечке ресурсов Surface/ImageReader. (I25cef)
  • CameraInfo.getIntrinsicZoomRatio() теперь округляет возвращаемое соотношение до двух десятичных знаков. (Ibe9a8)
  • Смягчена проверка HardwareBuffer.isSupported для формата PRIVATE в ImageAnalysis, чтобы предотвратить ложноотрицательные сбои на некоторых устройствах. (I347a4, b/545866947)
  • Исправлен сбой компиляции в новых версиях JDK при разрешении транзитивно импортированных аннотаций типов JSpecify во внутренних полях CameraX. (I00bb4, b/543937345)

Версия 1.7.0-alpha03

12 августа 2026 г.

Выпущены данные "androidx.camera:camera-*:1.7.0-alpha03". Версия 1.7.0-alpha03 содержит эти коммиты.

Изменения в API

  • Устаревшие API Camera2Interop (Camera2Interop.Extender, Camera2CameraControl, Camera2CameraInfo и CaptureRequestOptions) заменены фабричными методами конфигуратора Camera2Interop и функциями расширения Kotlin. (Ib0845, b/529609261)
  • Добавлены блоки расширения Kotlin DSL camera2Interop для preview, imageAnalysis, videoCapture, imageCapture и SessionConfig.Builder, а также функция расширения CameraControl.applyCamera2InteropAsync. (I51af9, b/529609261)
  • Добавлены новые фабричные методы конфигуратора Camera2Interop (forUseCase, forImageCapture, forSessionConfig, forCameraControl) и соответствующие методы setInterop / applyInteropAsync в Preview.Builder, ImageCapture.Builder, ImageAnalysis.Builder, VideoCapture.Builder, SessionConfig.Builder и CameraControl. (I0007b, b/529609261)
  • Добавлены вспомогательные методы для Camera2Interop и эквивалентные свойства расширения Kotlin (CameraInfo.cameraId, CameraInfo.cameraCharacteristics и String.toCameraSelector()), позволяющие получать идентификатор и характеристики камеры Camera2 из CameraInfo. (I11803, b/529609261)
  • В общедоступные API добавлены Preview.setMirrorMode, Preview.getMirrorMode и VideoCapture.setMirrorMode, а аннотация ExperimentalMirrorMode удалена. (I4ed60, b/519794349, b/470629643)
  • Добавлены конструкторы Kotlin DSL preview { ... }, imageCapture { ... }, imageAnalysis { ... } и videoCapture { ... } для создания UseCases. (I91df9, b/530013719)
  • Изменен ImagePlane.buffer, чтобы он был ненулевым ByteBuffer. (I98593)
  • В Kotlin DSL объявлены устаревшими методы получения свойств для SessionConfig.Builder, HighSpeedVideoSessionConfig.Builder и ExtensionSessionConfig.Builder, чтобы обеспечить использование свойств только для записи. (I2875b, b/534570559)

Исправление ошибок

  • Исправлена ошибка, из-за которой при связывании нескольких вариантов использования Preview с OverlayEffect происходил сбой доставки одного потока предварительной версии. (I7a383, b/532577546, b/532924417)
  • Исправлена ошибка, из-за которой на устройствах Recording.pause() и Recording.resume() происходил сбой при переключении камер во время непрерывной видеозаписи. I71004, b/532327691, b/367121726
  • Исправлены сбои HAL при использовании нулевой задержки затвора (ZSL) во время масштабирования за пределами физической камеры на устройствах с несколькими камерами. (I1c374, b/527782712, b/514757157)
  • Исправлена ошибка, из-за которой на устройствах Samsung Galaxy S25, S26 и Fold 7 могла не работать запись видео в формате HDR. (Ic0827, b/529618629)

Версия 1.7.0-alpha02

1 июля 2026 г.

Выпущены данные "androidx.camera:camera-*:1.7.0-alpha02". Версия 1.7.0-alpha02 содержит эти коммиты.

Изменения в API

  • В CameraXViewfinder теперь поддерживаются встроенные жесты для масштабирования и фокусировки, а также мигание экрана и состояние потока. FocusState теперь является общедоступным в viewfinder-core, чтобы можно было отслеживать результаты фокусировки по нажатию. (I66a17, b/522549890)
  • Добавлен класс isAutoRotationEnabled в SessionConfig.Builder , HighSpeedVideoSessionConfig.Builder, ExtensionSessionConfig.Builder и представлены функции фабрики Kotlin DSL для них. Это позволяет автоматически устанавливать нужную ориентацию на основе данных от датчиков устройства. (I5b4a3, b/510752515)
  • В TransformationInfo добавлено свойство TransformationMode, чтобы приложения могли использовать конвейер OpenGL в режиме EMBEDDED. (Id1de1, b/487826941)
  • В CameraInfo добавлены isNightModeIndicatorSupported() и getNightModeIndicator(), чтобы определять, когда условия окружающей среды соответствуют критериям для ночного режима. (Iae47b, b/499389465)
  • Добавлены общедоступные API ImageAnalysis.OUTPUT_IMAGE_FORMAT_PRIVATE и ImageProxy.getHardwareBuffer() для поддержки ImageAnalysis на основе графического процессора. (I41cb3, b/496022391, b/492934501)
  • Метод ExtensionsManager#getExtensionEnabledCameraSelector больше не поддерживается. Чтобы включить режимы расширений, используйте новый ExtensionSessionConfig API. (I2b336, b/473715607)
  • Добавлена поддержка визуального оформления кадров при одновременной съемке несколькими камерами. Теперь вы можете настроить:
  • Скругленные углы. Используйте setRoundedCornerRatio(float), чтобы применить нормализованное скругление (от 0,0 до 1,0) к краям кадра.
  • Границы. Используйте setBorderWidthRatio(float) и setBorderColor(int), чтобы добавить декоративную рамку одинаковой толщины (I18a07, b/366349205).
  • Обновлен класс CompositionSettings, чтобы обеспечить неотрицательный порядок по оси Z. Добавлена проверка в ConcurrentCamera.setCompositionSettings, чтобы гарантировать, что метод вызывается с правильным количеством настроек в допустимом режиме композиции. (If660d, b/496951658)
  • В CameraExtensionsInfo добавлены методы getNightModeIndicator() и isNightModeIndicatorAvailable(), позволяющие приложениям отслеживать, находится ли текущая среда в условиях ночного режима при использовании расширений камеры. (I62bb4, b/499389465)
  • Добавлена поддержка качества видео QHD в VideoCapture. (I0ac20, b/501305592)
  • Добавлены Recorder.Builder.setTargetAudioChannelCount(int) и Recorder.getTargetAudioChannelCount(), чтобы разработчики могли явно задавать количество аудиоканалов. (I6bee0, b/441895100)
  • Добавлен параметр Recorder.Builder.setTargetAudioEncodingBitRate(int), позволяющий задавать целевой битрейт кодирования аудио. (I29062, b/241151504)
  • Добавлен API ConcurrentCamera.setCompositionSettings, позволяющий приложениям динамически обновлять композицию текущей камеры после привязки жизненного цикла. Кроме того, новый API setZOrder в CompositionSettings.Builder позволяет точно управлять порядком рендеринга перекрывающихся видео с камер. (I90528, b/473702287)
  • Добавлены API для детального управления форматами кодирования. Теперь разработчики могут узнавать, какие форматы поддерживаются устройством, с помощью экспериментальных функций Recorder.getSupportedVideoMimeTypes() и getSupportedAudioMimeTypes(). Предпочтительные форматы можно явно задать с помощью Recorder.Builder.setVideoMimeType() и setAudioMimeType(). Кроме того, Recorder.getVideoCapabilities(CameraInfo, String) позволяет запрашивать информацию о возможностях камеры, например о поддерживаемых качествах и динамических диапазонах, для выбранного кодека (I4620e, b/491319384).
  • Добавлен метод CameraController.setAutoRotationEnabled(boolean), позволяющий отключать автоматическое прослушивание поворота устройства. (Ia0c03, b/449573627)
  • Добавлена поддержка блокировки AE/AWB в FocusMeteringAction через новый API setLockingMode. Это также позволяет обновлять области 3A без блокировки фокуса, благодаря чему камера может оставаться в режиме непрерывной автофокусировки при обновлении области фокусировки. (I6416f, b/481624745)

Исправление ошибок

  • Удалить требование для compileSdk 37 (If78b4)
  • Исправлено CameraXViewfinder проблем с преобразованием в режиме EMBEDDED, когда конвейер OpenGL включен CameraX для привязки большего количества UseCases или обработки поверхности. (I3e637, b/487826941)
  • Обновлены тесты и действия, чтобы использовать ExtensionSessionConfig вместо устаревшего API getExtensionEnabledCameraSelector. (I765d8, b/473715607)
  • Исправлена ошибка компиляции "Не удается получить доступ к классу ListenableFuture". (Ic8cba, b/497571473)
  • Обновлен compileSdk для Compose до API 37. Это значит, что для использования Compose требуется AGP версии 9.2.0 или более поздней. (Id45cd, b/413674743)

Версия 1.7.0-alpha01

11 марта 2026 г.

Выпущены данные "androidx.camera:camera-*:1.7.0-alpha01". Версия 1.7.0-alpha01 содержит эти коммиты.

Изменения в API

  • Добавлен CameraController.setSessionConfig() API. Это позволяет задать собственный объект SessionConfig для расширенных конфигураций UseCase, которые не поддерживаются CameraController напрямую. Когда SessionConfig активен, другие методы настройки в CameraController отключены (I35cf1, b/448525636).

Исправление ошибок

  • Библиотеки переведены на Java 11. Это означает, что созданный байт-код будет относиться к Java 11 (версия файла класса 55) и для использования библиотеки может потребоваться десахаризация (If4c2a, b/457821470).
  • Исправлена ошибка в ImageAnalysis, из-за которой изображения не поворачивались правильно, когда поворот выходного изображения включен, а начальный относительный поворот равен 0 градусов. (Id46c2, b/487160584)

Версия камеры 1.6

Версия 1.6.2

26 августа 2026 г.

Выпущены данные "androidx.camera:camera-*:1.6.2". Версия 1.6.2 содержит эти коммиты.

Исправление ошибок

  • Исправлен сбой компиляции в новых версиях JDK при разрешении транзитивно импортированных аннотаций типов JSpecify во внутренних полях CameraX. (I00bb4, b/543937345)

Версия 1.6.1

6 мая 2026 г.

Выпущены данные "androidx.camera:camera-*:1.6.1". Версия 1.6.1 содержит эти коммиты.

Исправление ошибок

  • Исправлена ошибка компиляции "Не удается получить доступ к классу ListenableFuture" при использовании CameraX 1.6.0. (Ic8cba, b/497571473)

Версия 1.6.0

25 марта 2026 г.

Выпущены данные "androidx.camera:camera-*:1.6.0". Версия 1.6.0 содержит эти коммиты.

Важные изменения по сравнению с версией 1.5.0

1. Переход на высокопроизводительный унифицированный стек камеры

  • Теперь CameraX использует CameraPipe – тот же современный высокопроизводительный стек, на котором работает камера Pixel. Это упрощает архитектуру и закладывает масштабируемую основу для внедрения передовых функций вычислительной фотографии в экосистему разработчиков.

2. Интеграция с Media3 Muxer

  • Теперь CameraX по умолчанию интегрирует Media3 Muxer в API VideoCapture. Переход на новую версию дает следующие преимущества:
    • Повышенная производительность. Более эффективная обработка и мультиплексирование видео.
    • Устойчивость к сбоям. Улучшенная защита от повреждения видеофайлов, обеспечивающая сохранение данных даже в случае сбоя приложения во время записи.

3. Улучшение группы функций

4. Стабилизирован SessionConfig API.

  • SessionConfig больше не является экспериментальным API. Теперь это стабильный общедоступный API, включающий SessionConfig и HighSpeedVideoSessionConfig. Теперь расширения CameraX можно реализовать с помощью нового API ExtensionSessionConfig. Добавлен новый API isSessionConfigSupported, позволяющий разработчикам запрашивать, поддерживается ли устройством определенная комбинация вариантов использования и функций (например, HDR, стабилизация, определенные разрешения, расширения CameraX или замедленная съемка), прежде чем привязывать ее к жизненному циклу.

Исправление ошибок

  • Исправлена ошибка, которая возникала на некоторых устройствах с Android 17 (API 37) или более поздней версии. Когда эти устройства предоставляют новые профили динамического диапазона (например, STANDARD_SMPTE_2094_50(ID 8192)), которые не поддерживаются в CameraX версии 1.5.1 и более ранних, библиотека не может правильно обработать эти идентификаторы, что приводит к ошибке NullPointerException или IllegalArgumentException во время ProcessCameraProvider.bindToLifecycle(). Это исправление позволяет CameraX игнорировать нераспознанные профили динамического диапазона, предотвращая сбой и поддерживая прямую совместимость. Чтобы избежать этой проблемы на устройствах с новыми профилями, обновите зависимость CameraX до версии 1.5.2, 1.6.0 или более поздней. Подробную информацию можно найти в описании проблемы 519796838. (Ibd7b5)
  • Теперь API группы функций предоставляет согласованные результаты, когда PREVIEW_STABILIZATION используется с VideoCapture. Это исправляет ошибку, которая приводила к несогласованным результатам, когда вариант использования предварительной версии не был активен. (Ifed82, b/449913903)
  • Исправлена ошибка, из-за которой были доступны неподдерживаемые предпочтительные функции. Теперь функции правильно фильтруются, если не выполняются необходимые условия использования. (I38db8, b/449532342)
  • Исправлена ошибка, из-за которой на Samsung Galaxy S6 видео воспроизводилось с помехами. (I612d9, b/235127608)
  • Исправлена ошибка, из-за которой CameraInfo#isFeatureGroupSupported мог неправильно возвращать значение true для PREVIEW_STABILIZATION, если SessionConfig в запросе уже был настроен с другими функциями. (I2c355c, b/437816469)
  • Исключены проблемные размеры выходных данных в формате YUV на устройствах Samsung Z Fold 4. Полученные изображения искажаются при использовании этих размеров. (I776bf, b/460322307)
  • Исправлена проблема, возникавшая на устройствах Samsung A53, из-за которой иногда не удавалось сделать снимок с включенной вспышкой, если использовался вариант VideoCapture. (I0f183, b/458197367)
  • Исправлена ошибка, из-за которой на некоторых устройствах при использовании вспышки со сверхширокоугольной камерой могли получаться недоэкспонированные снимки. (Ib7530, b/444590340)
  • Обновлена зависимость ExifInterface, чтобы исправить синтаксический анализ JPEG с заполнением 0xFF. Это устраняет сбои при фотосъемке на устройствах, где кодировщик JPEG добавляет байты заполнения перед маркерами. (I0eb49)

Версия 1.6.0-rc01

25 февраля 2026 г.

Выпущены данные "androidx.camera:camera-*:1.6.0-rc01". Версия 1.6.0-rc01 содержит эти коммиты.

Версия 1.6.0-beta02

11 февраля 2026 г.

Выпущены данные "androidx.camera:camera-*:1.6.0-beta02". Версия 1.6.0-beta02 содержит эти коммиты.

Исправление ошибок

  • Исправлена ошибка ImageCapture OUTPUT_FORMAT_RAW_JPEG in-memory capture IllegalArgumentException. (Id4eec, b/479990902)
  • Переход на мультиплексор AndroidX Media3. Это позволило устранить две проблемы: 1) повреждение видео при неожиданных прерываниях или завершении работы приложения; 2) сбои при сохранении видео в дескрипторах прокси-файлов. (I23b63, b/433649708, b/264812009, b/475750115)

Версия 1.6.0-beta01

28 января 2026 г.

Выпущены данные "androidx.camera:camera-*:1.6.0-beta01". Версия 1.6.0-beta01 содержит эти коммиты.

Исправление ошибок

  • Исправлена ошибка CameraExtensionsInfo в CameraX 1.6.0-alpha, из-за которой объект LiveData не мог получать обновленные данные. (I2c7a5)
  • Обновлена зависимость ExifInterface, чтобы включить исправление для синтаксического анализа JPEG с заполнением 0xFF. Это устраняет сбои при фотосъемке на устройствах, где кодировщик JPEG добавляет байты заполнения перед маркерами. (I0eb49)

Версия 1.6.0-alpha02

17 декабря 2025 г.

Выпущены данные "androidx.camera:camera-*:1.6.0-alpha02". Версия 1.6.0-alpha02 содержит эти коммиты.

Новые функции

  • Добавлена группируемая функция для обозначения стабилизации видео в конфигурации сеанса. Теперь разработчики могут запрашивать стабилизацию видео как обязательную или предпочтительную функцию, что позволяет использовать ее вместе с другими группируемыми функциями, такими как UHD_RECORDING и PREVIEW_STABILIZATION. (Ic6757, b/419766630)
  • Добавлены группируемые функции для обозначения качества видеозаписи в конфигурации сеанса. Теперь разработчики могут запрашивать определенное качество (например, UHD или FHD) как обязательное или предпочтительное, наряду с другими группируемыми функциями, такими как HDR и 60 кадров/с. (Ib5cd3, b/437820285)
  • Добавлена поддержка использования CameraEffect и API групп функций в SessionConfig. (I17f18, b/406370934)
  • Добавлена поддержка использования ImageAnalysis и API групп функций в SessionConfig. (I87833, b/406371720)

Изменения в API

  • Добавлена функция-сеттер addUseCase для ExtensionSessionConfig.Builder и недостающие геттеры для ExtensionSessionConfig. (I71e07, b/453988621)
  • Добавлен API ExtensionsManager.getInstance, который является приостанавливающей версией ExtensionsManager.getInstanceAsync (I3a0a9, b/452208792).
  • isFeatureGroupSupported переименован в isSessionConfigSupported и теперь поддерживает любые типы SessionConfig. (I21616, b/448781299)
  • Сервис "ExtensionsManager" преобразован в реализацию Kotlin. (I73091, b/452208792)
  • Добавлен метод CameraProvider#getCameraInfo(CameraSelector, SessionConfig) для получения CameraInfo, когда SessionConfig может влиять на выбор камеры. Например, при использовании ExtensionSessionConfig. (Ic548c, b/451891648)
  • Доступно ExtensionSessionConfig API. Теперь приложения могут создавать ExtensionSessionConfig и использовать его для создания сеанса расширений. (I6354c, b/448524373)
  • API androidx.camera.video.HighSpeedVideoSessionConfig больше не является экспериментальным и теперь полностью стабилен. (I492d4, b/447558239)
  • API androidx.camera.core.SessionConfig больше не является экспериментальным и теперь полностью стабилен. (Idc87a, b/447558437)

Исправление ошибок

  • Исправлен сбой, связанный с IllegalArgumentException: Dynamic range profile cannot be converted to a DynamicRange object: на устройствах с Android 17 или более поздней версии. (Ibd7b5, b/463465353)
  • Исключены проблемные размеры выходных данных в формате YUV на устройствах Samsung Z Fold 4. Полученные изображения искажаются при использовании этих размеров. (I776bf, b/460322307)
  • Исправлена ошибка, из-за которой параметр CaptureRequest.FLASH_MODE не применялся, если он был задан через API Camera2Interop. (I0004c, b/459608684)
  • Исправлена проблема, возникавшая на устройствах Samsung A53, из-за которой иногда не удавалось сделать снимок с включенной вспышкой, если использовался вариант VideoCapture. (I0f183, b/458197367)
  • Исправлена ошибка, из-за которой на некоторых устройствах при использовании вспышки со сверхширокоугольной камерой могли получаться недоэкспонированные снимки. (Ib7530, b/444590340)

Версия 1.6.0-alpha01

22 октября 2025 г.

Выпущены данные "androidx.camera:camera-*:1.6.0-alpha01". Версия 1.6.0-alpha01 содержит эти коммиты.

Новые функции

  • CameraX перешла на унифицированный высокопроизводительный стек камеры, который также используется в приложении "Камера Pixel". Этот новый стек, известный как CameraPipe, является результатом сотрудничества команд CameraX и Pixel Camera. Это гарантирует, что все улучшения будут доступны как пользователям CameraX, так и пользователям приложения "Камера" на Pixel.

Изменения в API

  • Добавлены новые API для динамического обнаружения добавления/удаления камеры. Подробную информацию вы найдете в документации по CameraPresenceListener API. (I41ead, b/427182232, b/419441394)

Исправление ошибок

  • Теперь API группы функций предоставляет согласованные результаты, когда PREVIEW_STABILIZATION используется с VideoCapture. Это исправляет ошибку, которая приводила к несогласованным результатам, когда вариант использования Preview не был активен. (Ifed82, b/449913903)
  • Исправлена ошибка, из-за которой были доступны неподдерживаемые предпочтительные функции. Теперь функции правильно фильтруются, если не выполняются необходимые условия использования. (I38db8, b/449532342)
  • Исправлена ошибка, из-за которой на Samsung Galaxy S6 видео воспроизводилось с помехами. (I612d9, b/235127608)
  • Исправлена ошибка, из-за которой CameraInfo#isFeatureGroupSupported мог неправильно возвращать значение true для PREVIEW_STABILIZATION, если SessionConfig в запросе уже был настроен с другими функциями. (I2c355c, b/437816469)

Версия камеры 1.5

Версия 1.5.3

28 января 2026 г.

Выпущены данные "androidx.camera:camera-*:1.5.3". Версия 1.5.3 содержит эти коммиты.

Исправление ошибок

  • Зависимость ExifInterface обновлена до версии 1.4.2. Это устраняет ошибку фотосъемки, которая возникает на устройствах, создающих JPEG-файлы с дополнительными (и разрешенными) байтами 0xFF перед маркером. (I16df4)

Версия 1.5.2

4 декабря 2025 г.

Выпущены данные "androidx.camera:camera-*:1.5.2". Версия 1.5.2 содержит эти коммиты.

Исправление ошибок

  • Исправлен сбой, связанный с IllegalArgumentException: Dynamic range profile cannot be converted to a DynamicRange object: на устройствах с Android 17 или более поздней версии. (Ic9184)
  • Исправлена ошибка, из-за которой API групп функций возвращал несогласованные результаты, когда функция PREVIEW_STABILIZATION добавлялась со сценарием использования VideoCapture, но без сценария использования Preview. (Ifed82)
  • Исправлена ошибка, из-за которой предпочтительные функции не отфильтровывались, несмотря на отсутствие необходимых вариантов использования для поддержки этих функций. (I38db8)

Версия 1.5.1

8 октября 2025 г.

Выпущены данные "androidx.camera:camera-*:1.5.1". Версия 1.5.1 содержит эти коммиты.

Исправление ошибок

  • Поддержка CameraEffect в режиме одновременного совмещения камер. Эффект будет применен к выходным данным композиции. Обратите внимание, что mirrorMode в VideoCapture будет игнорироваться, если эффект задан в режиме композиции параллельных камер. (If3d00, b/425565129)
  • Исправлена ошибка, из-за которой mirrorMode неправильно применялся к дополнительной камере в режиме композиции с параллельными камерами. (I686cd, b/446430827)
  • Поддержка связывания Preview, ImageCapture и VideoCapture в режиме одновременной работы камер без композиции. (Ib410a, b/443009871)
  • Исправлена ошибка, из-за которой UseCases, такие как ImageCapture и VideoCapture, теряли информацию о целевом повороте при повторном создании. Это может привести к неправильной ориентации изображений или видео, если после поворота устройства была изменена такая настройка, как imageCaptureMode. (I477c8, b/444734537)
  • Исправлена ошибка, из-за которой в режиме предварительного просмотра не удавалось выбрать разрешение 16:9, а в VideoCapture – записать видео в качестве QUALITY_1080P. Эта проблема возникала при использовании конфигурации разрешения предварительного просмотра по умолчанию, когда была активна внутренняя функция StreamSharing (например, когда одновременно привязаны четыре UseCase). (I493cb, b/440364875)
  • Устранена ошибка, из-за которой происходил сбой, когда эффект активировался после закрытия SurfaceProcessor (I2c450, b/414150174).
  • Исправлена ошибка в CameraController, которая вызывала IllegalStateException, когда начальный UseCase выбирал максимальное разрешение, что впоследствии мешало привязке других UseCase. (Ifb758, b/440374234)
  • Исключает проблемные размеры выходных данных YUV_420_888 для Nokia 7 Plus, которые вызывают сбой без сообщений об ошибках. (I3af47, b/436524501)
  • Исправлена ошибка, из-за которой CameraInfo#isFeatureGroupSupported мог неправильно возвращать значение true для функции PREVIEW_STABILIZATION. Иногда это может происходить при запросе с SessionConfig, который уже был настроен с другими функциями. (I2c355, b/437816469)
  • Повышена стабильность CameraXViewfinder на старых уровнях API и устройствах с проблемами SurfaceView за счет использования TextureView по умолчанию в таких сценариях. Этот резервный механизм теперь используется по умолчанию, но его можно переопределить программно. (Ieb476, b/437496463)
  • Исправлена утечка памяти в PreviewView, из-за которой могла не выполняться сборка мусора в Activity. Это происходит, если новый SurfaceRequest поступает до того, как обработан предыдущий. (I4aa0b,b/443112512)
  • Исправлена ошибка, из-за которой на устройствах Huawei P smart, Infinix Hot 40i и Realme C53 не работала запись в ускоренном и замедленном режимах. (40a668e, b/442984200)

Версия 1.5.0

10 сентября 2025 г.

Выпущены данные "androidx.camera:camera-*:1.5.0". Версия 1.5.0 содержит эти коммиты.

Важные изменения по сравнению с версией 1.4.0

  • Высокоскоростная и замедленная съемка. Легко интегрируйте высокоскоростную (120/240 кадров/с) и замедленную съемку с минимальным количеством кода. Подробную информацию можно найти в статьях Recorder#getHighSpeedVideoCapabilities(CameraInfo) и HighSpeedVideoSessionConfig.
  • SessionConfig и FeatureGroup API. Новый SessionConfig API позволяет настраивать сеанс камеры и безопасно включать несколько функций одновременно, в том числе HLG (HDR), Ultra HDR, 60 кадров/с и стабилизацию предпросмотра. Вы также можете задать приоритетную группу функций, чтобы CameraX определила оптимальную поддерживаемую комбинацию. Дополнительную информацию можно найти в статьях SessionConfig.Builder#setPreferredFeatureGroup, SessionConfig.Builder#setRequiredFeatureGroup и CameraInfo#isFeatureGroupSupported(SessionConfig).
  • Deterministic Frame Rate API. Устраните ограничения, связанные с setTargetFrameRate, используя CameraInfo.getSupportedFrameRateRanges(sessionConfig) для запроса и SessionConfig.setExpectedFrameRateRange для установки точной и поддерживаемой частоты кадров.
  • Расширения камеры. Теперь расширения поддерживают формат UltraHDR. Проверьте ImageCapture.getImageCaptureCapabilities(cameraInfo).getSupportedOutputFormats() и включите его в ImageCapture.Builder.setOutputFormat. Теперь при включенных расширениях учитываются коэффициент масштабирования и возможности стабилизации предварительного просмотра.
  • Яркость фонарика. Настройте яркость фонарика с помощью CameraControl.setTorchStrengthLevel.
  • Режим усиления при слабом освещении(CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY) можно включить с помощью следующих API: CameraInfo#isLowLightBoostSupported, CameraInfo#getLowLightBoostState и CameraControl#enableLowLightBoostAsync.
  • Запись видео. Теперь при нехватке места в хранилище во время записи видео появляется сообщение "VideoRecordEvent.Finalize.ERROR_INSUFFICIENT_STORAGE". PendingRecording.withAudioEnabled(boolean initialMuted) позволяет управлять начальным состоянием отключения звука для аудиозаписи.
  • Фотосъемка: поддержка форматов DNG (RAW) и JPEG + DNG (RAW) в ImageCapture. Проверьте, поддерживает ли ImageCaptureCapabilities(CameraInfo).getSupportedOutputFormats() формат RAW. Используйте перегруженные API takePicture с несколькими OutputFileOptions для съемки в формате RAW+DNG.
  • Анализ изображений: поддержка формата NV21 в ImageAnalysis. Включите ее с помощью ImageAnalysis.Builder.setOutputImageFormat(OUTPUT_IMAGE_FORMAT_NV21).

Версия 1.5.0-rc01

13 августа 2025 г.

Выпущены данные "androidx.camera:camera-*:1.5.0-rc01". Версия 1.5.0-rc01 содержит эти коммиты.

Исправление ошибок

  • Значение minSdk по умолчанию изменено с API 21 на API 23 (Ibdfca, b/380448311, b/435705964, b/435705223).
  • Снято ограничение на 10-битный вывод для режима автоэкспозиции при усилении слабого освещения. Теперь приложения могут одновременно включать обе функции на поддерживаемых устройствах. (I5a638)
  • Устранена проблема, из-за которой устройства с чипсетами UniSoc зависали при съемке. Проблема возникала, когда VideoCapture, Preview и ImageCapture использовались одновременно и для всех потоков было установлено разрешение 1280 x 720. (Ia00c4, b/380802479)
  • Исправлена ошибка, из-за которой при предварительном просмотре показывался черный экран, если для записи в режиме замедленной съемки не была задана высокая частота кадров. (cdf0ff2e9)
  • Улучшена обработка ошибок и ведение журнала в getViewportAspectRatioInt (82fca18).

Версия 1.5.0-beta02

16 июля 2025 г.

Выпущены данные "androidx.camera:camera-*:1.5.0-beta02". Версия 1.5.0-beta02 содержит эти коммиты.

Изменения в API

  • Добавлены новые API, позволяющие более интуитивно и точно настраивать или запрашивать группы функций высокого качества, поскольку эти функции могут не поддерживаться в качестве комбинации на всех устройствах. В SessionConfig теперь есть новые API, позволяющие указать, какие функции являются обязательными, а какие – предпочтительными. API CameraInfo.isFeatureGroupSupported позволяет узнать, поддерживается ли группа функций, прежде чем привязывать SessionConfig. SessionConfig также позволяет настроить прослушиватель, чтобы знать, какие функции в итоге выбраны, когда привязана конфигурация сеанса. (Ie4d60)
  • Добавлены новые API SessoinConfig.Builder.setFrameRateRange(Range<Integer>) и CameraInfo.getSupportedFrameRateRanges(SessionConfig), позволяющие разработчикам запрашивать гарантированно поддерживаемые частоты кадров, ограниченные определенным SessionConfig, а затем применять частоту кадров к SessionConfig. (Ieacf7)
  • Представлен новый API SessionConfig, который включает улучшенную абстракцию для настройки вариантов использования, параметров сеанса, CameraEffect, ViewPort и т. д. Привязка SessionConfig к LifecycleOwner открывает сеанс камеры, настраивает его с использованием указанных вариантов использования и параметров сеанса, а также применяет назначенные CameraEffect и ViewPort. При обновлении SessionConfig для того же LifecycleOwner можно просто привязать новый Sessionconfig, не вызывая сначала unbind или unbindAll. (Iedfc3)
  • Добавлены новые API для записи видео с высокой скоростью и замедленной съемки. Подробную информацию можно найти в документации по API HighSpeedVideoSessionConfig. (Ia16f3)

Исправление ошибок

  • Исправлена ошибка, из-за которой API ImageCaptureCapabilities#getSupportedOutputFormats() сообщал, что некоторые устройства поддерживают формат RAW, хотя на самом деле это было не так. (Ibcadb)
  • Исправлена утечка памяти, которая происходит при использовании PreviewView, включении CameraEffect или привязке четырех вариантов использования(StreamSharing) (I87468).
  • Исправлен сбой записи видео, вызванный AssertionError: недопустимое состояние внутреннего аудио: IDLING. (I38d4b, b/414259796)
  • Исправлена ошибка, из-за которой при запуске приложения на внешнем дисплее и горизонтальной ориентации устройства предпросмотр в PreviewView растягивался или поворачивался набок (Ia917a).
  • Исправлена ошибка, из-за которой настройки стабилизации предварительного просмотра не применялись правильно, когда трансляция с камеры передавалась между предварительным просмотром и VideoCapture (I5430e).
  • CameraXViewfinder теперь правильно обрабатывает замену поверхности в базовом Viewfinder. Это касается ситуаций, когда видоискатель EXTERNAL на уровне API 28 или ниже перемещается за пределы экрана или когда CameraXViewfinder (с любым ImplementationMode) является частью moveableContentOf(). Если базовый объект ViewfinderSurfaceSession не удается сохранить, CameraXViewfinder аннулирует текущий объект SurfaceRequest CameraX, позволяя CameraX использовать новый объект Surface. (I79432)
  • Исправлена ошибка в Android 10 и 11, из-за которой EXTERNAL CameraXViewfinder могло выглядеть растянутым или неправильным, поскольку операции преобразования (например, масштабирование или перенос) применялись слишком рано. Теперь система дожидается создания Surface, прежде чем применять эти преобразования на этапе макета, что обеспечивает правильный вывод. (Icc77c)
  • Функция Composable CameraXViewfinder теперь корректно работает с Pager в Compose. Это изменение гарантирует, что Composable-функция может быть успешно сброшена путем реализации обратного вызова onReset для AndroidView, поддерживающего реализации EMBEDDED и EXTERNAL. (I0d9be)
  • Исправлена утечка владельца жизненного цикла, которая происходит при отмене привязки вариантов использования к владельцу жизненного цикла без отключения поставщика камеры.

Версия 1.5.0-beta01

7 мая 2025 г.

Выпущены данные "androidx.camera:camera-*:1.5.0-beta01". Версия 1.5.0-beta01 содержит эти коммиты.

Изменения в API

  • Для проектов, выпущенных с Kotlin 2.0, требуется KGP 2.0.0 или более поздней версии (Idb6b5).
  • Теперь в видоискателе можно использовать ContentScale и Alignment, чтобы масштабировать и размещать отображаемую поверхность в ее контейнере, аналогично тому, как работает androidx.compose.foundation.Image. (Ibcea3)
  • Для всех аргументов TransformationInfo теперь заданы значения по умолчанию. Это позволит создавать видоискатели без TransformationInfo, в которых по умолчанию будет задан поворот источника на 0, без зеркального отображения источника и без прямоугольника кадрирования. (I2b1b2)
  • Добавлен поставщик камеры LifecycleCameraProvider, экземпляр которого можно создать с разными конфигурациями для функций, таких как доступ к камере виртуального устройства путем настройки с настраиваемым контекстом. (Ia2992)

Исправление ошибок

  • Исправлена проблема с зависанием предварительного просмотра при использовании ImageAnalysis с другим потоком, использующим TEMPLATE_RECORD на устройстве Samsung SM-E556B. (Ic0e62, b/409478042)
  • Исправлена проблема с зависанием предварительного просмотра при использовании ImageAnalysis с другим потоком, использующим TEMPLATE_RECORD, на устройстве Samsung SM-M556B. (Ic1a6a, b/395822788)
  • Исправлена ошибка, из-за которой на устройствах Pixel с Android 15 при изменении масштаба в ночном режиме AssertError возникали проблемы с расширениями. (I27a5d, b/401460276)
  • Исправлена ошибка, из-за которой ML Kit Analyzer возвращал неверные координаты граничной рамки при использовании CameraController. (Iae91b, b/409808510)

Версия 1.5.0-alpha06

26 февраля 2025 г.

Выпущены данные "androidx.camera:camera-*:1.5.0-alpha06". Версия 1.5.0-alpha06 содержит эти коммиты.

Изменения в API

  • Добавлены CameraInfo.getTorchStrengthLevel, CameraInfo.getMaxTorchStrengthLevel и CameraControl.setTorchStrengthLevel, чтобы можно было настраивать яркость фонарика (I00878).
  • Добавлен новый API CameraController#setTapToFocusAutoCancelDuration, позволяющий пользователям управлять автоматической отменой событий фокусировки по нажатию PreviewView. По умолчанию CameraX отменяет события фокусировки через 5 секунд (то есть фокус камеры сбрасывается). Этот API позволяет изменить длительность или полностью отключить автоматическую отмену. (Icf59a)
  • FLASH_STATE_READY переименован в NOT_FIRED, а другие FlashState названий констант упрощены для удобства чтения. (I8771d)
  • Добавлен Low Light Boost API. Устройства с Android 15 или более поздней версии могут поддерживать усиление при слабом освещении. Эта функция позволяет автоматически корректировать яркость предварительного просмотра, видео или потоков анализа изображений в условиях низкой освещенности. Приложения могут использовать новый API, чтобы: 1. Чтобы проверить доступность функции, используйте CameraInfo#isLowLightBoostSupported. 2. Используйте CameraControl#enableLowLightBoostAsync, чтобы включить режим, если устройства его поддерживают. 3. Используйте CameraInfo#getLowLightBoostState, чтобы отслеживать состояние усиления при слабом освещении. (I937ed)
  • Добавлены классы совместимости, чтобы ускорить запросы, не связанные с camera2, в camera-feature-combination-query. (Ie97ee)
  • Для событий фокусировки по нажатию CameraController новый API getTapToFocusInfoState() теперь также предоставляет соответствующую позицию нажатия, возвращая LiveData класса TapToFocusInfo, а предыдущий API LiveData<Integer>, возвращающий getTapToFocusState(), устарел и заменен новым API. (I238d2)

Исправление ошибок

  • Исправлена ошибка, из-за которой стабилизация предварительного просмотра не применялась, когда она была включена с помощью расширений. (I24ad7)
  • Исправлена ошибка, из-за которой событие состояния фокуса CameraController не сбрасывалось обратно на TAP_TO_FOCUS_NOT_STARTED, когда CameraX автоматически отменяла событие фокуса, которое по умолчанию происходит через 5 секунд. (I31954)
  • Исправлена ошибка, из-за которой предварительный просмотр зависал при использовании нулевой задержки затвора после нескольких снимков из-за невыпущенных ресурсов изображений. (Ic3c2a)
  • Исправлена ошибка, из-за которой на некоторых устройствах видео в формате UHD воспроизводились с красным оттенком, если в конвейере использовался OpenGL. (Idcedc)

Версия 1.5.0-alpha05

15 января 2025 г.

Выпущены данные "androidx.camera:camera-*:1.5.0-alpha05". Версия 1.5.0-alpha05 содержит эти коммиты.

Изменения в API

  • Добавьте VideoCapture.getSelectedQuality(), чтобы узнать выбранное качество на основе QualitySelector. (I70508, b/204288986)
  • Если фотосъемка выполняется с помощью API ImageCapture.OnImageCapturedCallback, то объект ImageInfo в возвращенном ImageProxy теперь можно использовать, чтобы узнать, сработала ли вспышка, через новый API ImageInfo.getFlashState(). (Id2c61, b/380527406)
  • Добавлена поддержка формата вывода OUTPUT_IMAGE_FORMAT_NV21 для ImageAnalysis. (I484ab)
  • Удалено экспериментальное примечание для артефакта featurecombinationquery (I4427f).
  • Настройте диапазон коэффициентов масштабирования, разрешенный для CameraControl, по характеристикам, относящимся к расширениям, когда включен режим расширений. (I85af1)

Исправление ошибок

  • Значение compileSdk изменено на 35, чтобы использовать API, связанные с Android 15. В приложениях, использующих библиотеки CameraX, также потребуется обновить параметр конфигурации compileSdk. (Ic80cd)
  • Теперь в этой библиотеке используются аннотации JSpecify nullness, которые относятся к типу type-use. Разработчикам, использующим Kotlin, следует применять следующий аргумент компилятора, чтобы обеспечить правильное использование: -Xjspecify-annotations=strict (это значение по умолчанию, начиная с версии 2.1.0 компилятора Kotlin). (Idc6c6, b/326456246)

Версия 1.5.0-alpha04

11 декабря 2024 г.

Выпущены данные "androidx.camera:camera-*:1.5.0-alpha04". Версия 1.5.0-alpha04 содержит эти коммиты.

Изменения в API

  • ImageCapture.Builder#setOutputFormat и ImageCaptureCapabilities#getSupportedOutputFormats теперь являются стабильными API (Ieb04a).
  • Добавьте VideoCapture.getResolutionInfo(), чтобы получать информацию о разрешении, когда VideoCapture привязан к жизненному циклу. (Icb478)
  • PreviewView.getScreenFlash и PreviewView.setScreenFlashOverlayColor теперь доступны как стабильные API. (I74fee)

Исправление ошибок

  • Исправлена ошибка, из-за которой на устройстве Vivo 1610 не удавалось сделать снимок со вспышкой в темноте. (I366f4)
  • Исправлена ошибка, из-за которой на Redmi Note 6 Pro фонарик неожиданно выключался после фотосъемки. (I2e0e8, b/377144569)
  • Исправлена проблема, из-за которой на устройствах Pixel с Android 15 в ночном режиме в расширениях не удавалось сделать фото, пока камера не фокусировалась на ближайшем объекте. (I228d4)
  • Исправлена ошибка, из-за которой не работала фотосъемка, когда включены расширения и VideoCapture. (I5c745)
  • Включена поддержка фотосъемки UltraHDR для расширений, если устройство поддерживает эту функцию. (I48300)
  • Исправлена проблема с таймингом вспышки при фотосъемке с CameraEffect на устройствах TCL. (I7698c)

Версия 1.5.0-alpha03

30 октября 2024 г.

Выпущены данные "androidx.camera:camera-*:1.5.0-alpha03". Версия 1.5.0-alpha03 содержит эти коммиты.

Изменения в API

  • Добавлены API выходных форматов для RAW и RAW + JPEG ImageCapture, проверка возможностей устройства выполняется в ImageCaptureCapabilities#getSupportedOutputFormats. OUTPUT_FORMAT_RAW – для съемки в формате RAW (Adobe DNG), а OUTPUT_FORMAT_RAW_JPEG – для одновременной съемки в форматах RAW и JPEG. Новый API ImageCapture#takePicture используется для одновременной фотосъемки. Он должен предоставлять два OutputFileOptions: первый – для изображения RAW, а второй – для изображения JPEG. (Ib0f3d)

Исправление ошибок

  • Исправлена проблема с недоэкспонированием видео и предпросмотра на устройствах TCL, когда включен режим VideoCapture. (Id7a64)
  • Исправлена ошибка, из-за которой вызов startFocusMetering с PreviewView.getMeteringPointFactory не позволял получить правильные координаты датчика, когда включен эффект или когда привязаны четыре варианта использования (совместное использование потока). (I916c5, b/345993685)
  • Исправлена ошибка, из-за которой событие VideoRecordEvent.Finalize.ERROR_INSUFFICIENT_STORAGE не запускалось, если при записи видео не хватало места в хранилище. (I35779, b/356399842)

Версия 1.5.0-alpha02

2 октября 2024 г.

Выпущены данные "androidx.camera:camera-*:1.5.0-alpha02". Версия 1.5.0-alpha02 содержит эти коммиты.

Новые функции

  • Новые API для запроса функций камеры, поддерживаемых устройством. Например, можно ли одновременно включить HDR и 60 кадров/с. В нее входят два артефакта: camera-feature-combination-query и camera-feature-combination-query-play-services. Это совместимая версия API CameraManager#getCameraDeviceSetup#isSessionConfigurationSupported camera2 с дополнительными данными, предоставляемыми сервисами Google Play.

Исправление ошибок

  • Исправлена проблема с целевой частотой кадров Preview/VideoCapture на устройствах уровня LEGACY. Целевая частота кадров, заданная с помощью API setTargetFrameRate или Camera2Interop, всегда перезаписывалась значением, предоставленным AeFpsRangeLegacyQuirk. После этого библиотека CameraX будет учитывать значение, заданное через API setTargetFrameRate или Camera2Interop. (Ie2d32)
  • Добавлены функции вспышки, фонарика и 3A для фотосъемки с помощью CameraEffect. Фотосъемка с использованием CameraEffect должна выполняться с той же предварительной и последующей обработкой (например, срабатыванием вспышки, конвергенцией 3A и т. д.), что и без CameraEffect. (I5ff30)
  • Исключены проблемные размеры выходных данных для ImageAnalysis на устройстве Samsung SM-A057G. Если в ImageAnalysis используется разрешение 1920 x 1440 или выше, предварительный просмотр будет недоступен. Чтобы избежать этой проблемы, на устройстве SM-A057G было применено исправление ExcludedSupportedSizesQuirk. (I63dfe, b/365877975)
  • Исправлена проблема с целевой частотой кадров Preview/VideoCapture, возникавшая, когда внутренний механизм передачи потока был включен для передачи потока в Preview и VideoCapture. (I4fdac)
  • Добавлено временное решение проблемы с неверными метаданными изображений JPEG на устройствах Samsung S10e и S10+. После исправления CameraX может успешно сохранять изображения JPEG, а при вызове функции ImageProxy.toBitmap() на этих устройствах могут возвращаться правильные объекты Bitmap, если возникает проблема с неправильными метаданными изображений JPEG. (Iae493, b/356428987)
  • Отключены расширения для задней камеры Samsung A52s с идентификатором 0, поскольку при съемке HDR-изображений могут происходить сбои на уровне ОС, а при настройке сеансов съемки в режимах BOKEH или FACE_RETOUCH могут возникать ошибки. (I03ec9, b/364152642)
  • Исправлена ошибка, из-за которой событие VideoRecordEvent.Finalize.ERROR_INSUFFICIENT_STORAGE не запускалось, если при записи видео не хватало места в хранилище. (Ia5b4f, b/356399842)
  • Исправлена ошибка, из-за которой не удавалось записать второе видео на Oppo A5 (CPH1931). (I181d6)

Версия 1.5.0-alpha01

4 сентября 2024 г.

Выпущены данные "androidx.camera:camera-*:1.5.0-alpha01". Версия 1.5.0-alpha01 содержит эти коммиты.

Новые функции

  • Выпущен новый артефакт camera-compose для адаптера CameraX Viewfinder Compose, который показывает поток предварительного просмотра из SurfaceRequest CameraX из camera-core. (I8666e)
  • Добавлена новая composable-функция CameraXViewfinder, которая адаптирует SurfaceRequest CameraX для composable-функции Viewfinder. (I4770f)

Изменения в API

  • Предоставить API для настройки композиции при одновременной видеозаписи с двух камер. Настройки включают значение альфа-канала для смешивания, смещение по координатам X и Y, а также масштаб ширины и высоты окна отображения кадра камеры. Смещение, ширина и высота указываются в нормализованных координатах устройства. (Ia2b8a)
  • CameraProvider.getCameraInfo теперь является официальным API. (I901cd)
  • Добавлен API PendingRecording.withAudioEnabled(boolean initialMuted) для управления исходным состоянием отключения звука. (I635c3, b/354829267)

Исправление ошибок

  • Исправлена ошибка, возникающая при вызове bindToLifecycle с удаленным LifecycleOwner. (I6e6d8)
  • Исправлена ошибка, из-за которой при подключении к VideoCapture на Motorola Edge 20 Fusion на экране предварительного просмотра с фронтальной камеры показывался черный экран. (I1fe88)
  • Оптимизирована конфигурация для распознавания жестов масштабирования в PreviewView, чтобы повысить плавность. (I04ffc)

Версия камеры 1.4

Версия 1.4.2

26 марта 2025 г.

Выпущены данные "androidx.camera:camera-*:1.4.2". Версия 1.4.2 содержит эти коммиты.

Исправление ошибок

  • Исправлена проблема с зависанием предварительного просмотра при использовании ImageAnalysis с другим потоком, использующим TEMPLATE_RECORD, на Samsung Galaxy M55. (Ic1a6a, b/395822788)

Версия 1.4.1

11 декабря 2024 г.

Выпущены данные "androidx.camera:camera-*:1.4.1". Версия 1.4.1 содержит эти коммиты.

Исправление ошибок

  • Исправлена проблема, из-за которой на устройствах Pixel с Android 15 в ночном режиме в расширениях не удавалось сделать фото, пока камера не фокусировалась на ближайшем объекте. (I228d4)
  • Устранена проблема, из-за которой ImageCapture#takePicture не работал, если расширения были включены и VideoCapture был связан с ними. (I5c745)

Версия 1.4.0

30 октября 2024 г.

Выпущены данные "androidx.camera:camera-*:1.4.0". Версия 1.4.0 содержит эти коммиты.

Важные изменения с версии 1.3.0

В CameraX 1.4.0 вас ждет много интересного. Сведения о подписке:

Главная функция: 10-битное HDR-видео

  • Снимайте потрясающие HDR-фото и видео.
  • Поддерживает кодирование HLG и 10-битное HEVC.
  • Используйте предварительный просмотр 10-битного HDR и запрашивайте возможности устройства.
  • Работает с изображениями UltraHDR и HDR-видео на все большем количестве устройств.

Другие полезные функции

  • Расширения Kotlin: добавлены функции приостановки takePicture и awaitInstance.
  • Эффекты в реальном времени. Применяйте эффекты, например водяные знаки и выделение объектов.
  • CameraController API: новые элементы управления для настройки видеозаписи.
  • Стабилизация предпросмотра. Проверяйте возможности устройства и включайте стабилизацию.
  • Улучшения VideoCapture: более точный контроль качества и доступ к более высоким разрешениям.
  • Интеграция расширений CameraX: простая интеграция с VideoCapture и новыми функциями ImageCapture.
  • Shutter Sound API. Позволяет легко проверять региональные требования к звуку затвора.
  • Вспышка экрана. Улучшает качество фотографий, сделанных на фронтальную камеру при слабом освещении.
  • API метаданных Camera Extensions. Поддерживающие API для настройки интенсивности расширений и получения уведомлений о текущем режиме расширений в ExtensionMode#AUTO. Дополнительную информацию об исправленных ошибках можно найти в объявлениях о бета-версии и кандидате на релиз.

Версия 1.4.0-rc04

16 октября 2024 г.

Выпущены данные "androidx.camera:camera-*:1.4.0-rc04". Версия 1.4.0-rc04 содержит эти коммиты.

Исправление ошибок

  • Исправлена ошибка, из-за которой при вызове startFocusMetering с PreviewView.getMeteringPointFactory не получалось получить правильные координаты датчика, когда включен эффект или когда привязаны четыре варианта использования (совместное использование потока). (I916c5, b/345993685)

Версия 1.4.0-rc03

2 октября 2024 г.

Выпущены данные "androidx.camera:camera-*:1.4.0-rc03". Версия 1.4.0-rc03 содержит эти коммиты.

Исправление ошибок

  • Добавлены функции вспышки, фонарика и 3A для фотосъемки с помощью CameraEffect. Фотосъемка с использованием CameraEffect должна выполняться с той же предварительной и последующей обработкой (например, срабатыванием вспышки, конвергенцией 3A и т. д.), что и без CameraEffect. (I5ff30)
  • Оптимизировано масштабирование щипком в PreviewView (I04ffc).
  • Отделите Ultra HDR от возможности 10-битного вывода, поскольку для поддержки Ultra HDR устройствам больше не требуется возможность 10-битного вывода. (I96ff2, I0c3b3)

Версия 1.4.0-rc02

18 сентября 2024 г.

Выпущены данные "androidx.camera:camera-*:1.4.0-rc02". Версия 1.4.0-rc02 содержит эти коммиты.

Исправление ошибок

  • Исправлена ошибка, возникающая при вызове bindToLifecycle с удаленным LifecycleOwner. (I6e6d8)
  • Добавлена анимация видимости в ScreenFlashView для ScreenFlash#apply. Это также устраняет ошибки, связанные с асинхронным изменением яркости. (I37cdb)
  • Улучшена плавность масштабирования за счет переопределения настроек масштабирования в фреймворке на поддерживаемых устройствах.

Версия 1.4.0-rc01

7 августа 2024 г.

Выпущены данные "androidx.camera:camera-*:1.4.0-rc01". Версия 1.4.0-rc01 содержит эти коммиты.

Новые функции

  • Добавлен экспериментальный метод CameraInfo.getCameraInfo, позволяющий получать информацию о камере без привязки к ней вариантов использования. (I550d1)

Изменения в API

  • Добавлены API PreviewView.getScreenFlash и PreviewView.setScreenFlashOverlayColor для случаев, когда ScreenFlashView не добавляется явным образом. (I43945)

Исправление ошибок

  • Исправлены проблемы с экспозицией и оттенком цвета при фотосъемке со вспышкой в условиях низкой освещенности, когда используется VideoCapture. (Ic9814)
  • Исправлена ошибка, из-за которой при прерывании запроса к takePicture с включенными расширениями не удавалось получить результат, а следующий запрос к takePicture мог не работать. (Iae78f)
  • Исправлена ошибка утечки памяти, которая возникала при включении расширений. (Iab276)
  • Исправлена ошибка в работе расширений CameraX на устройствах Pixel 7/8 и Samsung Galaxy S24. Проблема, связанная с преобразованием Camera2OutputConfigImpl в режиме выпуска, возникла после обновления AGP до версии 8.5.1 и включения минификации. (I99598, b/354824993)

Версия 1.4.0-beta02

12 июня 2024 г.

Выпущены данные "androidx.camera:camera-*:1.4.0-beta02". Версия 1.4.0-beta02 содержит эти коммиты.

Изменения в API

  • Как и в случае с VideoCapture, добавьте setMirrorMode для предварительного просмотра. Он будет поддерживать включение и отключение зеркального режима для потока предварительного просмотра через OutputConfiguration.setMirrorMode из API 33 и более поздних версий. Для более ранних версий API он не будет работать. (I821f4)

Исправление ошибок

  • Исправлена ошибка, из-за которой приложения не могли делать снимки на Samsung Tab A8, когда ImageCapture выбирает разрешение 1920 x 1080 в комбинации Preview + VideoCapture + ImageCapture UseCase. (I5a463, b/336925549)
  • Исправлена ошибка, из-за которой непрерывная запись могла прерываться при переключении камеры. (Icb0a1)

Версия 1.4.0-beta01

14 мая 2024 г.

Выпущены данные "androidx.camera:camera-*:1.4.0-beta01". Версия 1.4.0-beta01 содержит эти коммиты.

Изменения в API

  • Добавлен класс ZoomGestureDetector.ZoomEvent, который инкапсулирует состояния жеста масштабирования. (I84cdf)

Исправление ошибок

  • Исправлена ошибка, из-за которой при съемке фото и фокусировке по нажатию не использовались значения частоты кадров и режима стабилизации из повторяющегося запроса. Это могло приводить к повторному созданию сеанса съемки и задержкам или зависанию предварительного просмотра на некоторых устройствах. (I7dc0b)
  • Исправлена ошибка, из-за которой на некоторых устройствах нельзя было выбрать высокое разрешение, если включен параметр CameraEffect. (например, 4000 x 3000 на Samsung A32 5G). (Ie3ed3, b/337336152)
  • Исправлен сбой, возникавший при съемке фото с предварительным просмотром, когда ImageCapture и VideoCapture(UHD) связаны на Pixel 4XL API29. (I5b288)
  • Поддержка виртуальных устройств. Контекст, передаваемый в ProcessCameraProvider, будет сохранять идентификатор устройства, чтобы обеспечить работу в среде виртуального устройства. (I5ba48)

Версия 1.4.0-alpha05

17 апреля 2024 г.

Выпущены данные "androidx.camera:camera-*:1.4.0-alpha05". Версия 1.4.0-alpha05 содержит эти коммиты.

Новые функции

  • Сервис "ProcessCameraProvider" преобразован в реализацию Kotlin. (I46d4f)
  • Добавлены функции приостановки ImageCapture.takePicture, позволяющие вызывать их в идиоматическом стиле Kotlin. (I920be)

Изменения в API

  • Добавьте API выходного формата в ImageCapture и метод getSupportedOutputFormats в ImageCaptureCapabilities для запроса возможностей устройства. По умолчанию используется значение OUTPUT_FORMAT_JPEG, при котором изображения SDR сохраняются в формате JPEG. Если устройство поддерживает Ultra HDR и в качестве выходного формата задан OUTPUT_FORMAT_JPEG_ULTRA_HDR, CameraX будет снимать сжатые изображения Ultra HDR в графическом формате JPEG/R. Он обратно совместим с форматом SDR JPEG и поддерживает рендеринг HDR-контента. Это значит, что в старых приложениях и на старых устройствах изображения будут отображаться как обычные JPEG, а в приложениях и на устройствах, которые полностью поддерживают формат, – как HDR. (I5de50)
  • Добавлен метод PhysicalCameraInfo в CameraInfo для запроса информации о физической камере, а также методы получения и установки идентификатора физической камеры в CameraSelector (Ic5b90).
  • Замените CameraController#COORDINATE_SYSTEM_VIEW_REFERENCED на ImageAnalysis#COORDINATE_SYSTEM_VIEW_REFERENCED. Значение константы остается неизменным. Это нужно, чтобы собрать все константы в одном месте. (I890bb)
  • Новый API RetryPolicy позволяет разработчикам настраивать повторные попытки инициализации CameraX. (I36dd2)
  • Включено создание объекта ImageCaptureLatencyEstimate для упрощения тестирования (Iaba99).
  • Добавьте атрибут ImageAnalysis#COORDINATE_SYSTEM_SENSOR. В этом случае MlKitAnalyzer возвращает координаты в системе координат датчика камеры. (I3ec61)
  • Добавлен API метаданных расширений. Новые интерфейсы CameraExtensionsInfo и CameraExtensionsControl позволяют приложениям отслеживать и корректировать настройки мощности расширения. Приложения могут получить экземпляр CameraExtensionsInfo или CameraExtensionsControl с помощью недавно добавленных методов ExtensionsManager#getCameraExtensionsInfo() или ExtensionsManager#getCameraExtensionsControl(). (I28e1a)
  • Добавлен метод ProcessCameraProvider.awaitInstance, который является приостанавливающей версией метода ProcessCameraProvider.getInstance (Ib22b9).
  • Добавьте API PreviewView#getSensorToViewTransform(). Матрица представляет собой преобразование координат датчика камеры в координаты PreviewView. Это можно использовать для преобразования координат из одной системы UseCase в другую. Например, преобразование координат обнаруженных объектов в ImageAnalysis в оверлей PreviewView. (I947ab)
  • Сделайте API camera-viewfinder-core более общим, чтобы его можно было использовать в camera-viewfinder и camera-viewfinder-compose. (I1e295)
  • Добавить функцию getSurface в ViewfinderSurfaceRequest. (I781a0)
  • Используйте camera-viewfinder-core в camera-viewfinder и прекратите поддержку ViewfinderSurfaceRequest и CameraViewfinder. (I6198c)
  • Добавлен класс ZoomGestureDetector, который интерпретирует жесты масштабирования, специально настроенные для действия "сведение/разведение пальцев". (Ifafbf)

Исправление ошибок

  • Исправлена ошибка, из-за которой в ImageAnalysis целевое разрешение по умолчанию оставалось равным 640 x 480, даже если в приложениях было задано другое значение. Если в приложениях возникает эта проблема (версии 1.3.0–1.3.2) и вы не можете перейти на более новую версию, в которой она устранена, вы можете обойти проблему, напрямую задав ResolutionSelector с нужным разрешением и соответствующим AspectRatioStrategy для ImageAnalysis UseCase. (I81f72, b/330091012)
  • Исправлена ошибка, из-за которой запрос takePicture в очереди мог не выполняться, если текущий запрос не выполнен. (Ie0801)
  • Добавлена проверка недопустимых данных JPEG для устройств Vivo X60 и X60 Pro. Это может решить проблему с аномально большими изображениями на таких устройствах. (I82247, b/288828159)
  • Исправлена проблема с неверными метаданными изображений JPEG на устройствах Samsung A24. После исправления CameraX может успешно сохранять изображения JPEG, а при вызове функции ImageProxy.toBitmap() на устройствах Samsung A24 возвращаются правильные объекты Bitmap. (I8d6eb, b/309005680)
  • Проверка недопустимых данных JPEG применяется ко всем устройствам Samsung, если размер снятого изображения превышает 10 МБ. Это может решить проблему с аномально большими изображениями на устройствах Samsung. (Ic2a65, b/288828159)
  • Удалена поддержка ImageAnalysis в расширениях CameraX, поскольку реализации расширений многих OEM-производителей плохо работают с ImageAnalysis и могут вызывать проблемы с совместимостью. (I2d926)

Версия 1.4.0-alpha04

24 января 2024 г.

Выпущены данные "androidx.camera:camera-*:1.4.0-alpha04". Версия 1.4.0-alpha04 содержит эти коммиты.

Новые функции

  • Новый артефакт camera-effects – библиотека для применения эффектов в реальном времени к выходным данным CameraX, включая Preview, VideoCapture и/или ImageCapture. Этот артефакт содержит реализации OpenGL для API CameraEffect, который эффективно обрабатывает выходные данные камеры.
  • OverlayEffect – для рисования оверлеев с помощью Canvas API для Android. Это позволяет приложению добавлять водяные знаки или выделять обнаруженные объекты на изображениях с камеры.
  • API DynamicRange для предварительного просмотра. Теперь динамический диапазон можно задавать для предварительного просмотра независимо от видео. Это позволяет использовать динамические диапазоны HDR, такие как HLG10, только для предварительного просмотра. В CameraInfo также доступны новые API, позволяющие запрашивать, какие динамические диапазоны поддерживает каждая камера.

Изменения в API

  • Параметр ScreenFlashUiCompleter переименован в ScreenFlashListener, а параметр ScreenFlashUiCompleter#getExpirationTimeMillis перемещен в параметр expirationTimeMillis события ScreenFlash#apply. (I13944)
  • Добавлены новые API, позволяющие задавать динамический диапазон для предварительного просмотра и запрашивать динамические диапазоны, поддерживаемые каждой камерой. Это позволяет использовать динамические диапазоны HDR, такие как HLG10, только для предварительного просмотра, больше не требуя одновременной привязки VideoCapture. (If25e3)
  • Название getMirroring() изменено на isMirroring() (I47063).
  • В CameraX добавлена поддержка оценки задержки при съемке фотографий в реальном времени. Расширения камеры позволяют приложениям использовать API, который оценивает, сколько времени займет съемка. При расчете учитываются текущие условия окружающей среды, состояние камеры, время, затраченное на обработку запросов на многокадровую съемку, и, если необходимо, дополнительное время на кодирование обработанных буферов. (I05c3a)
  • Метод ScreenFlashUiControl переименован в ScreenFlash, ScreenFlashUiControl#applyScreenFlashUi – в ScreenFlash#apply, ScreenFlashUiControl#clearScreenFlashUi – в ScreenFlash#clear. Вместо прямого доступа к SCREEN_FLASH_UI_APPLY_TIMEOUT_SECONDS добавлен метод getScreenFlashUiApplyTimeoutSeconds. (Iccdd0)

Исправление ошибок

  • Исправлена утечка памяти, из-за которой действия или фрагменты не освобождались, когда расширения были включены (I14215).
  • Исправлена ошибка, из-за которой getZoomRatio неправильно возвращал уменьшенное значение при увеличении масштаба. (I4aa0d, b/317543616)
  • Событие ImageCapture#ScreenFlash#clear вызывается сразу после отмены привязки ImageCapture или закрытия камеры. Также исправлены некоторые ошибки, из-за которых событие не вызывалось, поскольку в этих сценариях съемка не завершалась должным образом. (If99f9)
  • Исправлен сбой, который происходил, когда жизненный цикл останавливался до завершения запроса takePicture (Idf017, b/306202751).
  • Исправлена ошибка, из-за которой на некоторых устройствах при включении расширений предварительный просмотр камеры становился черным (I1ffd0).
  • Исправлена ошибка, из-за которой на устройствах с однокристальной системой Snapdragon 778G неправильно определялась продолжительность видеозаписи (If6aa7, b/316057919).

Версия 1.4.0-alpha03

13 декабря 2023 г.

Выпущены данные "androidx.camera:camera-*:1.4.0-alpha03". Версия 1.4.0-alpha03 содержит эти коммиты.

Новые функции

  • Добавлен метод CameraInfo.mustPlayShutterSound, который позволяет узнать, должен ли воспроизводиться звук затвора в соответствии с региональными ограничениями. (Ifda84)
  • Добавлены OnImageCapturedCallback.onCaptureStarted и OnImageSavedCallback.onCaptureStarted для уведомления о том, что камера начала экспонировать кадр. Рекомендуется воспроизвести звук затвора или показать анимацию затвора. (Ic49b3)
  • В CameraX добавлена поддержка функции мигания экрана при фотосъемке на фронтальную камеру. CameraX будет обрабатывать API на стороне фреймворка и синхронизировать время с изменениями в интерфейсе приложения (например, триггер предварительной съемки AE после изменения цвета или яркости экрана приложения). Разработчикам приложений нужно будет только добавить реализации на стороне интерфейса в интерфейс ScreenFlashUiControl, предоставляемый CameraX. (I8ae84)
  • Добавлена поддержка реализации функции мигания экрана на стороне пользовательского интерфейса в CameraX. Приложения смогут получить базовую реализацию ImageCapture.ScreenFlashUiControl из PreviewView или недавно добавленного ScreenFlashView, который будет добавлять одноцветный оверлей и увеличивать яркость экрана до максимума во время съемки с миганием экрана. (I1810e)

Изменения в API

  • Поддержка новых функций расширений(предварительный просмотр и ход съемки). Добавлены API ImageCapture#getImageCaptureCapabilities(), позволяющие приложениям запрашивать возможности обратного вызова для предварительного просмотра и хода съемки. Приложения могут включить показ рекламы после просмотра с помощью ImageCapture.Builder#setPostviewEnabled(). Размер изображения можно выбрать с помощью ImageCapture.Builder#setPostviewResolutionSelector(). При вызове takePicture() можно реализовать onPostviewBitmapAvailable и onCaptureProcessProgressed в OnImageSavedCallback или OnImageCapturedCallback, чтобы получать уведомления о ходе обработки и последующем просмотре, если они поддерживаются. (I5cd88)
  • Добавлены API для расчета преобразования координат из датчика в текущий буфер с флагом, указывающим, содержит ли Surface информацию об ориентации камеры (I59096).
  • Предоставьте доступ к API для запроса PreviewCapabitlity в предварительной версии UseCase. (Ie5b6c)
  • Добавлены API для поддержки дополнительных качеств VideoCapture. Recorder.Builder#setVideoCapabilitiesSource(int) можно использовать с VIDEO_CAPABILITIES_SOURCE_CODEC_CAPABILITIES, чтобы создать экземпляр Recorder, который поддерживает больше качеств, чем VIDEO_CAPABILITIES_SOURCE_CAMCORDER_PROFILE. Распространенный пример – когда приложение пытается записать видео в формате UHD, но в CamcorderProfile устройства нет настроек UHD, хотя кодек поддерживает запись видео в формате UHD. (Iedbe2, b/263961771)
  • Добавьте геттер/сеттер формата вывода ImageAnalysis в CameraController. (I9a96c, b/308240643)

Исправление ошибок

  • Камера 1.3.1: улучшена работа ProcessCameraProvider#bindToLifecycle(). Основное изменение заключается в оптимизации процесса определения наиболее подходящих комбинаций размеров для UseCases. Оптимальные результаты зависят от конкретных комбинаций UseCase и количества поддерживаемых размеров выходных данных для целевых устройств. (I454f2)
  • Разрешить использовать VideoCapture, когда расширения включены. (I91f32)
  • Исправлена проблема с большими JPEG-изображениями на устройствах Samsung A71 и M51. В сегменте сжатых данных JFIF полученных изображений JPEG содержатся лишние нули. Это приводит к тому, что полученные изображения имеют экстремальный размер файла. Эти лишние нули будут удалены, чтобы размер графических файлов стал нормальным. (I01afc, b/288828159)
  • Отключите поддержку ImageAnalysis на устройствах Pixel, чтобы избежать ошибки, из-за которой на них случайно возвращаются непустые поддерживаемые размеры ImageAnalysis. (I7ec31)
  • Устранена проблема производительности, из-за которой при включенных расширениях увеличивалась нагрузка на ЦП и энергопотребление. (Ibdccb)
  • В CameraUseInconsistentTimebaseQuirk добавлен Snapdragon 480. Это устраняет проблему на устройствах с Android 12, использующих этот чипсет, когда звук в записях смещается на время, в течение которого устройство находится в приостановленном состоянии. (I58010)

Версия 1.4.0-alpha02

18 октября 2023 г.

Выпущены данные "androidx.camera:camera-*:1.4.0-alpha02". Версия 1.4.0-alpha02 содержит эти коммиты.

Изменения в API

  • Переименуйте API в setCameraOpenRetryMaxTimeoutInMillisWhileResuming и переименуйте аргумент. (I72370)
  • Добавление API для запроса возможностей устройства и включения стабилизации видео и предварительного просмотра. (I87544)
  • Предоставить API для настройки максимального времени ожидания при повторной попытке открыть камеру. (I0c642)
  • Выпущен общедоступный API ProcessCameraProvider.shutdownAsync для тестирования, позволяющий использовать поставщика камер в наборах тестов, в которых может потребоваться инициализировать CameraX разными способами между тестами. (I9eca7)
  • Добавлены API для настройки динамического диапазона, частоты кадров и зеркального режима при записи видео. (Ifb8f7)
  • Прекратить поддержку OutputSize и заменить на ResolutionSelector. ResolutionSelector – это более комплексный способ выбора разрешений, который совместим с API camera-core. (I93abd, b/286801438)

Исправление ошибок

  • Исправлена проблема черного изображения при предварительном просмотре на Samsung Galaxy S23 Ultra 5G при включенном расширении "Боке" или "Ретушь лица" с ImageAnalysis на основной камере. (I2e8b1)
  • Исправлена ошибка, из-за которой на Moto E5 Play растягивалось изображение в режиме предварительного просмотра и VideoCapture. (73dce2)

Версия 1.4.0-alpha01

20 сентября 2023 г.

Выпущены данные "androidx.camera:camera-*:1.4.0-alpha01". Версия 1.4.0-alpha01 содержит эти коммиты.

Изменения в API

  • Добавлен новый API для доступа к информации об амплитуде звука во время записи. (Id4925)

Исправление ошибок

  • Повышена стабильность расширений за счет того, что события инициализации и деинициализации запускаются в правильном порядке. (Ib3b8e)
  • Исправлена ошибка конфигурации сеанса захвата, возникавшая из-за превышения поддерживаемого количества комбинаций поверхностей, которое было вызвано добавлением дополнительной повторяющейся поверхности. (Id718c)
  • Исправлена проблема с большими JPEG-изображениями, снятыми на устройство Vivo S16. В сегменте сжатых данных JFIF полученных изображений JPEG содержатся лишние нули. Это приводит к тому, что полученные изображения имеют большой размер файла. Эти лишние нули будут удалены, чтобы размер графических файлов стал нормальным. (I79505, b/299069235)
  • Исправлена ошибка, из-за которой ImageAnalysis не удавалось связать с ImageCapture и предварительным просмотром, когда на некоторых устройствах были включены определенные режимы расширения. После исправления приложения будут получать правильное значение при запросе доступности ImageAnalysis через ExtensionsManager#isImageAnalysisSupported(). (I7d538)
  • Обновите JavaDoc, чтобы он соответствовал поведению. Вместо немедленного завершения #setZoomRatio, #setLinearZoom и #enableTorch ожидают, пока камера будет готова. Также добавлена информация о том, как получить максимальное поле зрения с помощью #takePicture API. (I23588)

Версия 1.3

Версия 1.3.4

12 июня 2024 г.

Выпущены данные "androidx.camera:camera-*:1.3.4". Версия 1.3.4 содержит эти коммиты.

Исправление ошибок

  • Исправлена ошибка, из-за которой getZoomRatio неправильно возвращал уменьшенное значение при применении увеличивающегося коэффициента масштабирования. (I4aa0d, b/317543616)
  • Исправлена ошибка, из-за которой при съемке фото и фокусировке по нажатию не использовались значения частоты кадров и режима стабилизации из повторяющегося запроса. Это могло приводить к повторному созданию сеанса съемки и задержкам или зависанию предпросмотра на некоторых устройствах. (I7dc0b)
  • Исправлена ошибка, из-за которой частота кадров устанавливалась на более низкое значение при вызове setTargetFrameRate с FRAME_RATE_RANGE_UNSPECIFIED. (I78c61)

Версия 1.3.3

17 апреля 2024 г.

Выпущены данные "androidx.camera:camera-*:1.3.3". Версия 1.3.3 содержит эти коммиты.

Исправление ошибок

  • Исправлена ошибка, из-за которой в ImageAnalysis целевое разрешение по умолчанию оставалось равным 640 x 480, даже если в приложениях было задано другое значение. Если в приложениях возникает эта проблема (версии 1.3.0–1.3.2) и вы не можете перейти на более новую версию, в которой она устранена, вы можете обойти проблему, напрямую задав ResolutionSelector с нужным разрешением и соответствующим AspectRatioStrategy для ImageAnalysis UseCase. (I81f72, b/330091012)

Версия 1.3.2

6 марта 2024 г.

Выпущены данные "androidx.camera:camera-*:1.3.2". Версия 1.3.2 содержит эти коммиты.

Исправление ошибок

  • Исправлена проблема с метаданными JPEG на устройствах Samsung A24. Теперь CameraX сохраняет изображения правильно, а функция ImageProxy.toBitmap() возвращает корректные объекты Bitmap. (I8d6eb, b/309005680)
  • Из-за проблем с разрешением 9280 x 6944 оно больше не доступно на устройствах Redmi Note 9 Pro. (Ia23da)

Версия 1.3.1

13 декабря 2023 г.

Выпущены данные "androidx.camera:camera-*:1.3.1". Версия 1.3.1 содержит эти коммиты.

Исправление ошибок

Повышена производительность ProcessCameraProvider#bindToLifecycle(). Основное изменение заключается в оптимизации процесса определения наиболее подходящих комбинаций размеров для UseCases. Оптимальные результаты зависят от конкретных комбинаций UseCase и количества поддерживаемых размеров выходных данных для целевых устройств. (I454f2)

Ниже приведены примеры результатов для различных сценариев.

  • Четыре UseCases: Preview + ImageCapture + ImageAnalysis + VideoCapture

    • Google Pixel 7: примерно с 430 до 60 мс.
    • Samsung Galaxy S23 Ultra: примерно с 540 до 45 мс.
    • Samsung A53 5G: примерно со 115 до 70 мс.
  • Три UseCases: Preview + ImageCapture + ImageAnalysis

    • Google Pixel 7: примерно от 9 до 7 мс.
    • Samsung Galaxy S23 Ultra: примерно от 6 до 5 мс.
    • Samsung A53 5G: примерно от 32 до 12 мс.
  • В CameraUseInconsistentTimebaseQuirk добавлен Snapdragon 480. Это устраняет проблему на устройствах с Android 12, использующих этот чипсет, когда звук в записях смещается на время, в течение которого устройство находится в приостановленном состоянии. (I58010)

Версия 1.3.0

18 октября 2023 г.

Выпущены данные "androidx.camera:camera-*:1.3.0". Версия 1.3.0 содержит эти коммиты.

Важные изменения по сравнению с версией 1.2.0

Версия 1.3.0-rc02

20 сентября 2023 г.

Выпущены данные "androidx.camera:camera-*:1.3.0-rc02". Версия 1.3.0-rc02 содержит эти коммиты.

Исправление ошибок

  • Повышена стабильность расширений за счет того, что события инициализации и деинициализации запускаются в правильном порядке. Это исправило некоторые проблемы с черным экраном предварительного просмотра при переключении режимов расширений или камер. (Iddaac)
  • Исправлена ошибка, из-за которой ImageAnalysis не удавалось связать с ImageCapture и предварительным просмотром, когда на некоторых устройствах были включены определенные режимы расширения. После исправления приложения будут получать правильное значение при запросе доступности ImageAnalysis через ExtensionsManager#isImageAnalysisSupported(). (I7d538)
  • Исправлена проблема, из-за которой аудио и видео в записанном ролике не синхронизировались, когда на Xiaomi Poco X3 NFC был включен зеркальный режим. (I20b4c)

Версия 1.3.0-rc01

23 августа 2023 г.

Выпущены данные "androidx.camera:camera-*:1.3.0-rc01". Версия 1.3.0-rc01 содержит эти коммиты.

Изменения в API

  • Добавлен метод PendingRecording.asPersistentRecording, позволяющий непрерывно записывать, пока VideoCapture, к которому прикреплен Recorder, повторно привязывается. (I517c6)

Исправление ошибок

  • Исправлен сбой, возникавший, когда поток передавался и в VideoCapture, и в предварительную версию. Также исправлена проблема с черным экраном на устаревших устройствах при включенной демонстрации экрана.
  • Исправлена проблема с большими изображениями JPEG, снятыми на устройствах серии Samsung S7 (SM-G930T, SM-G930V). В сегменте сжатых данных JFIF полученных изображений JPEG содержатся лишние нули. Это приводит к тому, что полученные изображения имеют большой размер файла. Эти лишние нули будут удалены, чтобы размер графических файлов стал нормальным. (I407b0, b/288828159)
  • Исправлена проблема с большими изображениями JPEG, снятыми на устройствах Samsung S22 (SM-S901B, SM-S901B/DS) и S22+ (SM-S906B). В сегменте сжатых данных JFIF полученных изображений JPEG содержатся лишние нули. Из-за этого размер файлов изображений на устройстве S22 SM-S901B/DS составляет около 13 МБ. Эти лишние нули будут удалены, чтобы размер графических файлов стал нормальным. (I73be9, b/288828159)
  • Исправлена проблема с большими изображениями JPEG на устройствах Samsung серий A5, A52, A70 и A72. В сегменте сжатых данных JFIF полученных изображений JPEG содержатся лишние нули. Из-за этого размер файлов с изображениями получается слишком большим (около 32 или даже 96 МБ). Эти лишние нули, заполняющие данные, будут удалены, чтобы захваченные графические файлы имели нормальный размер. (I97c4d, b/288828159)
  • Исправлен сбой на уровне ОС при съемке фотографий с включенными расширениями (I698f5).

Версия 1.3.0-beta02

26 июля 2023 г.

Выпущены данные "androidx.camera:camera-*:1.3.0-beta02". Версия 1.3.0-beta02 содержит эти коммиты.

Исправление ошибок

  • Использование фонарика в качестве вспышки на Pixel 4 и 5 для улучшения качества съемки при слабом освещении (I56ff5, b/280221967).
  • Исправлена проблема с большими изображениями JPEG на устройствах Samsung A5 (2017). В сегменте сжатых данных JFIF полученных изображений JPEG содержатся лишние нули. Размер файла с изображением составляет около 32 МБ. Эти лишние нули, заполняющие данные, будут удалены, чтобы захваченные графические файлы имели нормальный размер. (I29837, b/288828159)
  • Исправлена ошибка, из-за которой не запускалась повторная попытка в случае сбоя съемки на проблемных устройствах, указанных в CaptureFailedRetryQuirk. (I7b589)

Версия 1.3.0-beta01

21 июня 2023 г.

Выпущены данные "androidx.camera:camera-*:1.3.0-beta01". Версия 1.3.0-beta01 содержит эти коммиты.

Изменения в API

  • Функция ResolutionSelector.Builder#setHighResolutionEnabledFlag(int) переименована в setAllowedResolutionMode, а константы ResolutionSelector#HIGH_RESOLUTION_FLAG_OFF/ON – в PREFER_CAPTURE_RATE_OVER_HIGHER_RESOLUTION/PREFER_HIGHER_RESOLUTION_OVER_CAPTURE_RATE (If84e8).
  • Удалены устаревшие API ImageAnalysis.setTargetRotationDegrees(int), ImageCapture.setTargetRotationDegrees(int) и VideoCapture.setTargetRotationDegrees(int). (Id8e77)
  • Класс DynamicRange представляет динамический диапазон изображений. Это можно использовать для выбора форматов HDR в качестве выходных данных VideoCapture через VideoCapture.Builder#setDynamicRange(). (Ib0377)
  • В ExtensionsManager добавлен API isImageAnalysisSupported, с помощью которого приложения могут определять, можно ли связать вариант использования ImageAnalysis с предварительным просмотром и ImageCapture, когда расширения включены. (I1bc63)
  • Новый класс VideoCapabilities, полученный из Recorder, можно использовать для запроса поддерживаемых динамических диапазонов и качества видеозаписи на устройстве. Методы getSupportedQualities() и isQualitySupported() класса QualitySelector больше не поддерживаются. Используйте вместо них методы getSupportedQualities() и isQualitySupported() класса VideoCapabilities. (I04014)
  • Метод CameraController#setVideoCaptureTargetQuality() переименован в setVideoCaptureQualitySelector и принимает аргумент QualitySelector, что обеспечивает большую гибкость при настройке качества видео. CameraController#getVideoCaptureTargetQuality() заменяется на getVideoCaptureQualitySelector. I520ed
  • Удалена экспериментальная аннотация для функций видео. Функции видео теперь работают стабильно. (I1a113)

Исправление ошибок

  • Используйте фонарик в качестве вспышки на устройствах Samsung SM-A320, чтобы повысить скорость и качество изображения при слабом освещении. (I6a022, b/286190938)
  • Добавлена поддержка формата ImageFormat.JPEG для ImageProxy.toBitmap(). Если массив байтов JPEG не удается декодировать, будет выдано исключение UnsupportedOperationException. (I81958, b/282057603)

Версия 1.3.0-alpha07

24 мая 2023 г.

Выпущены данные "androidx.camera:camera-*:1.3.0-alpha07". Версия 1.3.0-alpha07 содержит эти коммиты.

Новые функции

  • Новый API VideoCapture.Builder# setTargetFrameRate(Range) позволяет записывать видео с частотой кадров, отличной от установленной по умолчанию. Доступные значения частоты кадров для записи можно запросить через новый API CameraInfo#getSupportedFrameRates().

Изменения в API

  • Константы ResolutionSelector#HIGH_RESOLUTION_FLAG_OFF/ON переименованы в ALLOWED_RESOLUTIONS_NORMAL/SLOW, а функция конструктора setHighResolutionEnabledFlag – в setAllowedResolutionMode. (Iae817)
  • Теперь метод CameraInfo#getSupportedFrameRateRanges() возвращает Set, а не List, чтобы лучше показать, что диапазоны не упорядочены. (I02f43)
  • Добавьте прослушиватель ошибок в CameraEffect, чтобы обрабатывать неустранимые ошибки (Ice471).
  • Добавлен общедоступный конструктор в ResolutionInfo для упрощения тестирования (If6d1c).
  • Добавлен API UseCase.snapToSurfaceRotation(int), который заменяет setTargetRotationDegrees. API ImageAnalysis.setTargetRotationDegrees(int), ImageCapture.setTargetRotationDegrees(int) и VideoCapture.setTargetRotationDegrees(int) объявлены устаревшими. (Ia9010)
  • Добавлены новые API Preview#getTargetFrameRate и Preview.Builder#setTargetFrameRate, позволяющие задавать и получать целевую частоту кадров для предварительного просмотра (If4f22).
  • Теперь VideoRecordEvent.Finalize будет завершаться с кодом ошибки ERROR_RECORDING_GARBAGE_COLLECTED, если объект Recording остановлен из-за сборки мусора. (Iba974)

Исправление ошибок

  • Исправлена ошибка NullPointerException, возникавшая, когда размеры кешированных выходных данных в StreamConfigurationMapCompat были равны null. (Idf124, b/282025204)
  • Исправлена ошибка, из-за которой Preview.setSurfaceProvider(null) не приостанавливал предпросмотр в расширениях (Ia903e).
  • Исправлена ошибка, из-за которой при открытии камеры возникало исключение ConcurrentModificationException, если привязано VideoCapture. (Ic8ac4)

Версия 1.3.0-alpha06

19 апреля 2023 г.

Выпущены данные "androidx.camera:camera-*:1.3.0-alpha06". Версия 1.3.0-alpha06 содержит эти коммиты.

Новые функции

  • Параллельная съемка – это новая функция, появившаяся в Android 11. Она позволяет одновременно вести трансляцию с нескольких камер, например с фронтальной и основной. В настоящее время CameraX поддерживает только две параллельные камеры, что позволяет одновременно работать двум камерам, к каждой из которых привязано не более двух {@link UseCase}. Максимальное разрешение – 720p или 1440p. Подробную информацию можно найти в статье CameraManager#getConcurrentCameraIds().
  • Представляем новый API ResolutionSelector, который включает следующие функции:
    • Приложения могут указывать соотношение сторон и стратегии разрешения, чтобы выбрать наилучшее разрешение для своих нужд.
    • Все размеры и соотношения сторон выражаются в координатах датчика камеры.
    • В приложениях можно реализовать специальный фильтр разрешений, чтобы упорядочить поддерживаемые размеры в нужном порядке.
    • Приложения также могут включать съемку в высоком разрешении, чтобы получать изображения более высокого качества. Однако обратите внимание, что при высоком разрешении сканирование может занять больше времени.
    • Добавлены API для дублирования VideoCapture. Видео, записанные с помощью VideoCapture, по умолчанию не отражаются по горизонтали. Однако по умолчанию изображение с фронтальной камеры показывается в зеркальном отражении. API зеркального отображения VideoCapture позволяют выравнивать изображение по предварительному просмотру при использовании фронтальной камеры. Есть три MirrorMode, OFF, ON и ON_FRONT_ONLY. Чтобы выровнять изображение по предварительному просмотру камеры, рекомендуется использовать ON_FRONT_ONLY. Это означает, что зеркальное отображение не включено для основной камеры, но включено для фронтальной.

Изменения в API

  • Добавлен новый API ResolutionSelector. Приложения могут задавать стратегии соотношения сторон и разрешения с помощью резервных правил или специального фильтра разрешения, чтобы получать желаемые результаты. Приложения могут указывать флаг, чтобы включить запись в высоком разрешении. Это позволит CameraX выбирать более высокое разрешение при съемке фото и видео. Однако обратите внимание, что при высоком разрешении съемка может занимать больше времени. (Ibed95)
  • Диапазоны частоты кадров, поддерживаемые алгоритмом автоматической экспозиции, теперь можно запрашивать через CameraInfo#getSupportedFrameRateRanges(). (Iaa67f)
  • Объединить названия всех методов частоты кадров в FrameRate. Исправлена ошибка javadoc в VideoCapture#getTargetFrameRate() (I83304).
  • Прекращена поддержка устаревших API setTargetAspectRatio и setTargetResolution. Используйте вместо него новый API ResolutionSelector. (I542c3)
  • Добавлены общедоступные API для одновременной работы двух камер, в том числе:
    1. List<List<CameraInfo>> getAvailableConcurrentCameraInfos()
    2. ConcurrentCamera bindToLifecycle(@NonNull ConcurrentCameraConfig concurrentCameraConfig)
    3. boolean isConcurrentCameraModeOn() и ConcurrentCameraConfig, SingleCameraConfig и ConcurrentCamera (Iab1c1)
  • Сделайте ImageProcessor.Response#getOutputImage NonNull (Ib9c60).
  • Добавлены API для дублирования VideoCapture, в том числе VideoCapture.Builder.setMirrorMode(int) и VideoCapture.getMirrorMode(). API полезны для приложений, в которых запись видео должна соответствовать стандартному поведению предварительного просмотра камеры, то есть предварительный просмотр основной камеры не зеркальный, а предварительный просмотр фронтальной камеры зеркальный. (I713b6, b/194634656)
  • Добавьте API setTargetFrameRate() в VideoCapture.Builder и API getTargetFramerate() в VideoCapture (I109d4).
  • Сделайте так, чтобы SurfaceOutput расширял Closable, и скройте общедоступный конструктор SurfaceOutput.Event. (I60ea8)
  • Добавлен метод Recording.mute, позволяющий динамически включать и отключать звук в обрабатываемой записи. RecordingStats будет содержать AudioStats.AUDIO_STATE_MUTED, если звук в обрабатываемой записи отключен явным образом. (Ie17fc)
  • Параметр #setEffects() больше не может быть нулевым. Добавлен API #clearEffects() для удаления эффектов. Чтобы удалить эффекты, приложение должно вызвать #clearEffects(). (I4b4d9)
  • Добавлен второй конструктор для ViewfinderSurfaceRequest.Builder, чтобы использовать конструктор копирования (I621a7).

Исправление ошибок

  • Исправлена ошибка, из-за которой приложения, вызывающие Extensions API, могли аварийно завершать работу при закрытии камеры (Ib27e5).
  • Исправлена ошибка, из-за которой VideoCapture не работало с фронтальной камерой на некоторых устройствах. Например, на Samsung Galaxy S23 и Xiaomi 2107113SG. (Ibec7e, b/270656244)
  • Исправлена ошибка, из-за которой на устройствах с Android 10 и более поздними версиями ОС не удавалось сделать снимок, используя файл в общедоступной папке внешнего хранилища. Обратите внимание, что в Android 10 для съемки фотографий с помощью File в общедоступной папке внешнего хранилища также требуется установить для requestLegacyExternalStorage значение true в теге приложения. (I11b2c)
  • Исправлена ошибка RejectedExecutionException, которая приводила к сбою в DefaultSurfaceProcessor. Сбой может произойти, когда VideoCapture привязан, а действие приостановлено. (Idb46a, b/273713906)

Версия 1.3.0-alpha05

22 марта 2023 г.

Выпущены данные "androidx.camera:camera-*:1.3.0-alpha05". Версия 1.3.0-alpha05 содержит эти коммиты.

Изменения в API

  • Добавлены API поворота VideoCapture, включая VideoCapture.Builder.setTargetRotation(int), VideoCapture.setTargetRotation(int), VideoCapture.setTargetRotationDegrees(int) и VideoCapture.getTargetRotation(). Эти API полезны для приложений, которые блокируют ориентацию устройства. Также добавлены ImageCapture.setTargetRotationDegrees(int) и ImageAnalysis.setTargetRotationDegrees(int). (Id3ffe, b/205242781)
  • Разрешить VIDEO_CAPTURE и PREVIEW|VIDEO_CAPTURE в качестве цели эффектов. Эффекты, предназначенные для VIDEO_CAPTURE, будут применены к UseCase VideoCapture. Эффекты, предназначенные для PREVIEW|VIDEO_CAPTURE, будут применены к общему потоку перед копированием в поток предварительного просмотра и поток VideoCapture. (Iee6f3)

Исправление ошибок

  • Камера 1.2.2. Исправлена ошибка, из-за которой расширения CameraX не работали должным образом, когда на некоторых устройствах, например Pixel, был включен ProGuard (I90aa2).
  • Исправлена ошибка в PreviewView, из-за которой при повороте экрана изображение в режиме предпросмотра могло искажаться, если приложение само управляет ориентацией экрана. Это происходит только на некоторых устройствах. Проблема воспроизводится на Pixel 4a, Pixel 5 и Pixel 6a. (I14340, b/223488673)

Версия 1.3.0-alpha04

22 февраля 2023 г.

Выпущены данные "androidx.camera:camera-*:1.3.0-alpha04". Версия 1.3.0-alpha04 содержит эти коммиты.

Новые функции

Новая функция, которая позволяет поддерживать ранее несовместимые комбинации Surface, передавая один поток в несколько UseCase.

  • Ранее при привязке Preview, VideoCapture, ImageAnalysis на аппаратном уровне камеры FULL и ниже или при привязке Preview, VideoCapture, ImageCapture на аппаратном уровне LEGACY CameraX выдавал ошибку IllegalArgumentException.
  • Теперь привязки будут работать без исключений. Вместо этого CameraX использует OpenGL для копирования общего потока как в Preview, так и в VideoCapture.
  • В результате в приложении может увеличиться задержка и энергопотребление.

Изменения в API

  • Добавьте API, чтобы преобразовать ImageProxy в Bitmap. Поддерживаемые форматы ImageProxy: ImageFormat.YUV_420_888 и PixelFormat.RGBA_8888. Если формат недействителен, будет выдана ошибка IllegalArgumentException. (Ic7110)
  • Добавьте CoroutineCameraViewfinder, чтобы поддерживать настройку видоискателя с помощью функций приостановки в Kotlin. (I657bc)
  • Добавьте новый общедоступный конструктор для ViewfinderSurfaceRequest. Это удобно, если пользователь не может предоставить CameraCharacteristics. (Ie6549)

Исправление ошибок

  • Исправлен сбой расширений, который происходит на некоторых устройствах Samsung при слишком быстрой приостановке/возобновлении работы приложения (Iaca26).

Версия 1.3.0-alpha03

25 января 2023 г.

Выпущены данные "androidx.camera:camera-*:1.3.0-alpha03". Версия 1.3.0-alpha03 содержит эти коммиты.

Изменения в API

  • Добавлено поле CameraInfo.getIntrinsicZoomRatio, позволяющее указать угол обзора относительно камеры по умолчанию. (Ib300c)
  • Добавлено свойство CameraInfo.getLensFacing, позволяющее указывать, куда направлен объектив. Добавлена экспериментальная функция CameraSelector#LENS_FACING_EXTERNAL для выбора внешних камер. (Icaf3e)
  • Добавьте #setEffect() в CameraController, чтобы можно было добавлять эффекты к изображению с камеры. (I1d21f)
  • Добавьте метод invalidate() в SurfaceRequest. Поставщик Surface может сообщить, что ранее предоставленная поверхность больше недействительна. (Idc649)
  • Добавьте API ImageProcessor. Этот интерфейс предназначен для добавления эффектов постобработки в конвейер ImageCapture. (I575c6)
  • Добавлен API Recorder.Builder.setAspectRatio(), который можно использовать вместе с QualitySelector для поддержки большего количества разрешений видео. (I8a082)
  • Добавлен метод Recorder.Builder#setTargetVideoEncodingBitRate для настройки целевой кодировки видео BitRate и метод Recorder#getTargetVideoEncodingBitRate для получения целевого битрейта кодировки видео. (I5984d)

Исправление ошибок

  • Исправлена ошибка, из-за которой ImageCapture не работала, если вспышка была включена, но отсутствовала. (I9e8b4, b/263391112)
  • Исправлена проблема с повреждением изображений JPEG при записи данных о местоположении Exif на некоторых устройствах Samsung с Android 12. (Ib7086, b/263747161, b/263289024)
  • Если вы задаете фонарик или масштаб до завершения инициализации камеры, например вызываете CameraController#enableTorch, ожидающее действие кешируется и отправляется после завершения инициализации. (I11e92, b/264157663)

Версия 1.3.0-alpha02

7 декабря 2022 г.

Выпущены данные "androidx.camera:camera-*:1.3.0-alpha02". Версия 1.3.0-alpha02 содержит эти коммиты.

Изменения в API

  • добавьте новый API для применения эффекта постобработки к выходным данным предварительного просмотра. (Ic17d5)
  • OutputOptions.getDurationLimit переименован в OutputOptions.getDurationLimitMillis, а OutputOptions.setDurationLimit – в OutputOptions.setDurationLimitMillis. (I91f0c)
  • Добавьте класс AudioConfig для управления настройками звука при записи видео. Аннотация @RequiresPermission перенесена из функций startRecording в AudioConfig, чтобы избежать ненужных запросов разрешений в случаях, когда аудио не требуется. (I28755)
  • Удалите классы Metadata, OnVideoSavedCallback, OutputFileOptions и OutputFileResults, которые больше не используются после применения нового API для записи видео. (I38cd8)
  • Примените новый API для записи видео. Методы getVideoCaptureTargetSize и setVideoCaptureTargetSize заменены методами getVideoCaptureTargetQuality и setVideoCaptureTargetQuality соответственно, поскольку setTargetResolution больше не поддерживается. (I2a1d5)

Исправление ошибок

  • Удалите устаревший API core.VideoCapture. (I531e0)
  • Исправлена ошибка, из-за которой обратный вызов onError не выполнялся при съемке фотографий без разрешения на доступ к хранилищу (I936db, b/244807669).
  • Повысить качество и надежность расширений камеры. Расширения камеры отключены на устройствах Motorola с версией расширений 1.1.0 и более ранними из-за проблем с поддержкой боке, фотосъемкой и возобновлением предпросмотра. (Id3ce3)
  • Исправлен сбой на уровне ОС, возникавший при кадрировании видео с помощью ViewPort на устаревших устройствах. (I16b8a, b/251357665)

Версия 1.3.0-alpha01

9 ноября 2022 г.

Выпущены данные "androidx.camera:camera-*:1.3.0-alpha01". Версия 1.3.0-alpha01 содержит эти коммиты.

Новые функции

  • Camera-viewfinder has been published officially. Camera-viewfinder предоставляет базовый виджет видоискателя, который может показывать видеопоток с камеры для Camera2. Пример можно найти в образце кода.

Изменения в API

  • Добавлено поле OutputOptions.setDurationLimit, позволяющее задать ограничение на продолжительность видео. Если вы превысите указанный лимит, запись будет автоматически завершена. (I902a0)
  • Добавить состояние ошибки аудиозаписи AudioStats.AUDIO_STATE_SOURCE_ERROR. Отправляется, если не удается настроить источник аудио или возникает ошибка. (I37410)

Исправление ошибок

  • Добавлена функция, позволяющая некоторым проблемным устройствам повторить попытку записи в случае сбоя. (Id4795)
  • Устранена проблема с черным экраном при реализации PreviewView SurfaceView на ViewPager2. В рамках исправления PreviewView будет повторно использовать SurfaceView, если запрошенное разрешение не изменилось. (Ib3f27)
  • Добавлена поддержка кадрирования видео (функция WYSIWYG) при использовании API ViewPort или CameraController. (Ifbba8, b/201085351)
  • Исправлена ошибка, из-за которой на Huawei P40 lite не записывалось видео с фронтальной камеры. (I87c57, b/250807400)

Версия 1.2

Версия 1.2.3

24 мая 2023 г.

Выпущены данные "androidx.camera:camera-*:1.2.3". Версия 1.2.3 содержит эти коммиты.

Исправление ошибок

  • Исправлена ошибка, из-за которой VideoCapture не работало с фронтальной камерой на некоторых устройствах. Например, на Samsung Galaxy S23 и Xiaomi 2107113SG. (Ibec7e, b/270656244)

Версия 1.2.2

22 марта 2023 г.

Выпущены данные "androidx.camera:camera-*:1.2.2". Версия 1.2.2 содержит эти коммиты.

Исправление ошибок

  • Исправлена ошибка, из-за которой расширения CameraX не работали должным образом, когда на некоторых устройствах, например Pixel, был включен ProGuard (I90aa2).

Версия 1.2.1

25 января 2023 г.

Выпущены данные "androidx.camera:camera-*:1.2.1". Версия 1.2.1 содержит эти коммиты.

Исправление ошибок

  • Исправлена проблема с повреждением изображений JPEG при записи данных о местоположении Exif на некоторых устройствах Samsung с Android 12. (b/263289024)

Версия 1.2.0

7 декабря 2022 г.

Выпущены данные "androidx.camera:camera-*:1.2.0". Версия 1.2.0 содержит эти коммиты.

Важные изменения с версии 1.1.0

  • Новая библиотека camera-mlkit-vision. Легко интегрируйте CameraX со многими функциями MLKit, включая сканирование штрихкодов, распознавание лиц, распознавание текста и т. д. Добавлены новые API MLKitAnalyzer.
  • Новый экспериментальный API для съемки без задержки затвора. Оптимизирует конвейер захвата, чтобы уменьшить задержку и сохранить хорошее качество изображения. В режиме CAPTURE_MODE_ZERO_SHUTTER_LAG задержка между нажатием кнопки спуска затвора и съемкой должна быть минимальной по сравнению с другими режимами. На устройствах, которые не поддерживают ZERO_SHUTTER_LAG, будет использоваться CAPTURE_MODE_MINIMIZE_LATENCY.
  • Прекращена поддержка функции android.camera.core.VideoCapture.
  • Добавлен общедоступный API Camera2Interop (setStreamUseCase()).
  • Добавлено требование к уровню API для setOutputImageRotationEnabled.
  • Название "ImageAnalysis.Analyzer#getTargetResolutionOverride()" изменено на "ImageAnalysis.Analyzer#getDefaultTargetResolution()".
  • Добавлен API для добавления географических метаданных в сохраненное видео.
  • Исправлена низкая частота кадров при использовании VideoCapture и предварительного просмотра с соотношением сторон 16:9.
  • Исправлена проблема с черным экраном предварительного просмотра, которая возникала, когда на некоторых устройствах Samsung было включено расширение BOKEH и пользователь переключал камеры.
  • Исправлена проблема с растягиванием Preview/VideoCapture на устройствах Samsung J7 Prime (SM-G610M) и J7 (SM-J710MN) с уровнем API 27.
  • Отключен обходной путь для горизонтального отражения области автофокуса фронтальных камер на устройствах Samsung с Android T, так как проблема была устранена.

Версия 1.2.0-rc01

24 октября 2022 г.

Выпущены данные "androidx.camera:camera-*:1.2.0-rc01". Версия 1.2.0-rc01 содержит эти коммиты.

Изменения в API

  • Добавьте API setStreamUseCase для OutputConfiguration. Пользователь может указать сценарий использования потока для сеанса, переопределив внутреннюю логику CameraX, чтобы выбрать сценарий использования потока для оптимизации в соответствии со своими потребностями. (Ib1a95)

Исправление ошибок

  • Исправлена проблема с растягиванием Preview/VideoCapture на устройствах Samsung J7 Prime (SM-G610M) и J7 (SM-J710MN) с уровнем API 27. При разрешении 1920 x 1080 изображения Preview/VideoCapture растягиваются. Добавлено временное решение, позволяющее не выбирать разрешение 1920 x 1080 для предварительного просмотра или VideoCapture, чтобы избежать растягивания изображения. (I0e04e)
  • Исправлена низкая частота кадров при использовании VideoCapture и предварительного просмотра с соотношением сторон 16:9 на некоторых устройствах Huawei. (If8c88, b/223643510)
  • Исправлена ошибка, из-за которой не открывалась камера, если не было задано значение SurfaceProvider для предварительного просмотра. В рамках исправления предварительный просмотр без заданного значения SurfaceProvider теперь не будет настраиваться в сеансе съемки. (I99681)

Версия 1.2.0-beta02

21 сентября 2022 г.

Выпущены данные "androidx.camera:camera-*:1.2.0-beta02". Версия 1.2.0-beta02 содержит эти коммиты.

Изменения в API

  • Добавлено требование к уровню API для setOutputImageRotationEnabled (I26e3e, b/240993561).

Исправление ошибок

  • Отключен обходной путь для горизонтального отражения области автофокусировки фронтальных камер на устройствах Samsung с Android T, так как проблема была устранена. (I05f69)
  • Исправлена проблема с черным экраном предварительного просмотра, которая возникала, когда на некоторых устройствах Samsung было включено расширение BOKEH и пользователь переключал камеры. (If6168)

Версия 1.2.0-beta01

24 августа 2022 г.

Выпущены данные "androidx.camera:camera-*:1.2.0-beta01". Версия 1.2.0-beta01 содержит эти коммиты.

Новые функции

  • Новая библиотека camera-mlkit-vision. CameraX легко интегрируется со многими функциями ML Kit, включая сканирование штрихкодов, распознавание лиц и текста. Образец кода
  • Новый экспериментальный API Zero-Shutter Lag. Оптимизирует конвейер захвата, чтобы уменьшить задержку и сохранить хорошее качество изображения. Если для режима съемки задано значение CAPTURE_MODE_ZERO_SHUTTER_LAG, задержка между нажатием кнопки спуска затвора и созданием снимка должна быть минимальной по сравнению с другими режимами съемки. На устройствах, которые не поддерживают ZERO_SHUTTER_LAG, будет использоваться CAPTURE_MODE_MINIMIZE_LATENCY.
  • ImageAnalysis.Analyzer и MLKitAnalyzer стали официальными API.
  • Добавлен API для добавления географических метаданных в сохраненное видео.
  • Переименовать ImageAnalysis.Analyzer#getTargetResolutionOverride() в ImageAnalysis.Analyzer#getDefaultTargetResolution().

Исправление ошибок

  • Исправлена ошибка с фотосъемкой на устройстве Alps k61v1_basic_ref. Изображения JPEG, полученные от HAL, содержат неверные метаданные Exif. В метаданных Exif нет тега 0xffd9 или 0xffda, который позволяет ExifInterface правильно анализировать атрибуты. Чтобы обойти эту проблему, делайте снимки в формате YUV, а затем сжимайте их в JPEG. (I45abb)

Версия 1.2.0-alpha04

27 июля 2022 г.

Выпущены данные "androidx.camera:camera-*:1.2.0-alpha04". Версия 1.2.0-alpha04 содержит эти коммиты.

Изменения в API

  • Переименовать ImageAnalysis.Analyzer#getTargetResolutionOverride() в ImageAnalysis.Analyzer#getDefaultTargetResolution(). Поведение также изменено, чтобы значение, возвращаемое этим методом, можно было переопределить значением ImageAnalysis#setTargetResolution(). (If1d36)
  • Добавлен API для добавления географических метаданных в сохраненное видео. Объект android.location.Location можно задать с помощью нового API androidx.camera.video.OutputOptions.Builder.setLocation(Location). (I313a0, b/204197544)

Исправление ошибок

  • Исправлена ошибка, из-за которой не удавалось сделать снимок, если предварительный просмотр не был привязан (Ie70b6, b/235119898).
  • Исправлен сбой в Recorder при попытке записи, когда источник аудио недоступен. (I9f652)

Версия 1.2.0-alpha03

29 июня 2022 г.

Выпущены данные "androidx.camera:camera-*:1.2.0-alpha03". Версия 1.2.0-alpha03 содержит эти коммиты.

Изменения в API

  • Удалена аннотация experimental для ImageAnalysis.Analyzer и MLKitAnalyzer. (I0ff22)

Исправление ошибок

  • Добавлено время ожидания автофокуса по умолчанию (5000 мс). Если FocusMeteringAction не отменено и автофокус не сработал за это время, то isFocusSuccessful будет иметь значение false. (Ibc2e3)
  • Исправлена ошибка, из-за которой не удавалось сделать снимок, если предварительный просмотр не был привязан (I1d3a2, b/235119898).
  • Включена реализация расширенного экстендера и обновлена версия интерфейса расширений поддержки CameraX до 1.2 (I92256).

Версия 1.2.0-alpha02

1 июня 2022 г.

Выпущены данные "androidx.camera:camera-*:1.2.0-alpha02". Версия 1.2.0-alpha02 содержит эти коммиты.

Новые функции

  • Добавлен экспериментальный API CameraX Zero-Shutter Lag.

Изменения в API

  • Добавьте новый режим записи CAPTURE_MODE_ZERO_SHUTTER_LAG в ImageCapture и isZslSupported в CameraInfo, чтобы запрашивать возможности устройства. Режим "CAPTURE_MODE_ZERO_SHUTTER_LAG" обеспечивает минимальную задержку для мгновенной съемки. Она реализована на основе кольцевого буфера, который кеширует промежуточные результаты съемки для последующей обработки, когда пользователь нажимает кнопку, чтобы сделать снимок. Если {@link VideoCapture} привязан, режим вспышки не отключен или расширение OEM включено, этот режим будет отключен автоматически. (I9ae74)
  • Добавьте метод ImageAnalysis.getBackgroundExecutor() (Icc945)

Исправление ошибок

  • Устранена проблема, из-за которой метод takePicture в ImageCapture отключал фонарик на некоторых устройствах. (Ib5eb5, b/228272227)
  • Исправлена ошибка, из-за которой AssertionError не обрабатывался при получении характеристики CONTROL_ZOOM_RATIO_RANGE (/Ia248a, b/231701345).

Версия 1.2.0-alpha01

18 мая 2022 г.

Выпущены данные "androidx.camera:camera-*:1.2.0-alpha01". Версия 1.2.0-alpha01 содержит эти коммиты.

Новые функции

  • Запущена новая библиотека camera-mlkit-vision

Исправление ошибок

  • Исправлена ошибка, из-за которой QualitySelector не записывал видео в формате UHD, когда была включена резервная стратегия. Проблема возникает, когда VideoCapture связан с ImageCapture и предварительным просмотром на устройстве с камерой уровня FULL или выше. Резервная стратегия QualitySelector приводит к тому, что VideoCapture неправильно получает разрешение FHD. Разрешение UHD поддерживается для этого сочетания и должно быть принято. (I0e788, b/230651237)
  • Исправлено NullPointerException на ImageCapture.takePicture(). (I92366, b/230454568, b/229766155)
  • Исправлено поведение асинхронной паузы в androidx.camera.video.Recorder (Ia8ce8).

Camera-Camera2, Camera-Core, Camera-Lifecycle и Camera-Video версии 1.1.0

Версия 1.1.0

29 июня 2022 г.

Выпущены данные "androidx.camera:camera-*:1.1.0". Версия 1.1.0 содержит эти коммиты.

Важные изменения по сравнению с версией 1.0.0

  • Добавлены первые версии-кандидаты библиотек Landed View, Extension и Video Capture. Начиная с версии 1.1.0-beta01, все библиотеки CameraX будут иметь одинаковый номер версии. Это упростит отслеживание версий и уменьшит сложность матриц совместимости.
  • Добавлены новые общедоступные API и функции, в том числе:
  • Добавьте официальную библиотеку camera-video, чтобы поддерживать сценарии использования видеозаписи.
  • Возможность преобразования YUV в RGB и поворота (ImageAnalysis.Builder.setOutputImageRotationEnabled и setOutputImageFormat).
  • Поддержка многооконного режима, позволяющая приложениям CameraX возобновлять работу камеры, когда она прерывается другим приложением и фокус возвращается.
  • Исправлены некоторые проблемы с предварительным просмотром, чтобы обеспечить корректную работу CameraX на складных устройствах.
  • Добавлен API CameraState, который будет доступен через CameraInfo.
  • Добавлен API ProcessCameraProvider.getAvailableCameraInfos() для прямого получения информации о доступных камерах.
  • Вывод в формате JPEG для ImageCapture#OnImageCapturedCallback, когда включены расширения.
  • В CameraInfo добавлен API isFocusMeteringSupported, который позволяет приложениям проверять, поддерживается ли FocusMeteringAction текущей камерой.
  • Добавлен API getResolutionInfo, который предоставляет информацию о разрешении для предварительного просмотра, ImageCapture и ImageAnalysis.
  • Добавлен новый API ImageCapture.Builder#setJpegQuality, позволяющий менять качество сжатия выходного изображения JPEG при съемке.
  • В общедоступный API добавлен параметр CameraSelector#filter, позволяющий фильтровать список CameraInfos на основе CameraSelector.
  • Добавлен метод Camera2CameraControl.clearCaptureRequestOptions для очистки существующих параметров запроса на захват.
  • Добавлен экспериментальный API для использования CameraController с внешними библиотеками обработки изображений, например MLKit.
  • Добавлен экспериментальный API CameraInfo#getCameraSelector(), который возвращает уникальный для камеры CameraSelector.
  • Несколько экспериментальных API стали официальными общедоступными API.
  • Аннотация @Experimental заменена на @RequiresOptIn для экспериментальных API. Для вызова экспериментальных API используйте androidx.annotation.OptIn вместо устаревшего androidx.annotation.experimental.UseExperimental.
  • Следующие экспериментальные API стали официальными: CameraXConfig.Builder#setAvailableCamerasLimiter(), CameraXConfig.Builder#setMinimumLoggingLevel(), CameraXconfig.Builder#setSchedulerHandler(), CameraXConfig#getAvailableCamerasLimiter(), CameraXConfig#getMinimumLoggingLevel(), CameraXConfig#getCameraExecutor(), CameraXConfig#getSchedulerHandler(),
  • API: @ExperimentalCameraFilter
  • экспериментальные API экспокоррекции.
  • Экспериментальный API UseCaseGroup для camera-core, camera-lifecycle и camera-video стал стабильным. Добавлены метатеги ViewPort#getLayoutDirection, ViewPort.Builder#setLayoutDirection и ViewPort.Builder#setScaleType для настройки области просмотра.
  • ExperimentalUseCaseGroupLifecycle теперь является официальным общедоступным API.
  • Изменения в существующих API
  • Renamed MediaStoreOutputOptions.getCollection в организацию MediaStoreOutputOptions.getCollectionUri.
  • ActiveRecording переименован в "Запись", чтобы сократить длину названия.
  • API для создания QualitySelector заменен на API на основе списков.

Исправление ошибок

  • Исправлена ошибка YuvToJpegProcessor EOFException, возникавшая, когда был включен режим расширения и задан режим ImageCapture#CAPTURE_MODE_MAX_QUALITY.
  • Не удалось настроить фиксированный кодек, так как запись видео завершается.
  • Исправлено растянутое соотношение сторон при предпросмотре и записи видео в формате FHD.
  • Исправлена ошибка, из-за которой на некоторых устройствах после паузы и возобновления воспроизведения аудио и видео не синхронизировались.
  • Устранена проблема, из-за которой при нажатии для фокусировки (startFocusAndMetering) срабатывала вспышка, если она была включена или работала в автоматическом режиме в условиях низкой освещенности.

Версия 1.1.0-rc02

1 июня 2022 г.

Выпущены данные "androidx.camera:camera-*:1.1.0-rc02". Версия 1.1.0-rc02 содержит эти коммиты.

Исправление ошибок

  • Исправлено NullPointerException на ImageCapture.takePicture(). (I92366, b/230454568, b/229766155)
  • Исправлена ошибка, из-за которой AssertionError не обрабатывался при получении характеристики CONTROL_ZOOM_RATIO_RANGE. (Ia248a, b/231701345)

Версия 1.1.0-rc01

11 мая 2022 г.

Выпущены данные "androidx.camera:camera-*:1.1.0-rc01". Версия 1.1.0-rc01 содержит эти коммиты.

Новые функции

  • Выпуск первой версии-кандидата для camera-video, camera-view и camera-extension.

Исправление ошибок

  • Исправлена ошибка, из-за которой видеокодек не освобождался, когда VideoCapture<Recorder> отвязывался. Это приводило к сбою последующих использований VideoCapture<Recorder> при записи с MediaCodec.CodecException, особенно на устройствах с API 21–22. (Ie7f68)
  • Исправлена ошибка, из-за которой снимки экрана, сделанные в CameraExtensionsActivity, не удалялись в ImageCaptureTest.

Версия 1.1.0-beta03

6 апреля 2022 г.

Выпущены данные "androidx.camera:camera-*:1.1.0-beta03". Версия 1.1.0-beta03 содержит эти коммиты.

Изменения в API

  • Конструктор CaptureRequestOptions стал ограниченным. (I261b6)
  • Добавлен экспериментальный API для использования CameraController с внешними библиотеками обработки изображений, например MLKit (I4ea71).

Исправление ошибок

  • Исправлена ошибка, из-за которой в PreviewView предпросмотр поворачивался набок, если действие не перезапускалось после поворота устройства в многооконном режиме. (I1ea36, b/223488673)
  • Исправлена ошибка многооконного режима, из-за которой при переключении фокуса обратно на приложение не удавалось возобновить работу камеры, если: 1) другое приложение с высоким приоритетом открывало другую камеру; 2) использовалось устройство Samsung с Android 12. (I7e9f2)
  • Добавлено временное решение для устройств, на которых происходит сбой при проверке доступности вспышки. На этих устройствах фонарик будет недоступен. (If26a3, b/216667482)
  • Исправлена ошибка AbstractMethodError, которая возникала, когда приложения использовали расширения и включали ProGuard. (I7cbaf, b/222726805)
  • Принудительно отключен режим боке на Motorola razr 5G, из-за которого экран предпросмотра становился черным. (I35d49)
  • Исправлена ошибка, из-за которой на некоторых устройствах Samsung с API ниже 29 после паузы и возобновления воспроизведения аудио и видео не синхронизировались. (I64622, b/202798609, b/202798572)
  • Исправлена ошибка, из-за которой на устройствах Sony G3125 аудио и видео не синхронизировались после паузы и возобновления воспроизведения. (I2a1a5, b/202799148)
  • Исправлена ошибка, из-за которой происходил сбой, когда Диктофон сталкивался с InvalidConfigException. Однако это исправление только предотвращает сбой приложения, но не устраняет причину ошибки InvalidConfigException. Если настроить Recorder по-прежнему не удается, приложения будут получать обратный вызов с ошибкой при начале записи. (I89c29, b/213617227)

Внешний вклад

  • Обновлен API :compose:ui:ui-test (updateApi) в связи с переходом на test-coroutines-lib (I3366d).

Версия 1.1.0-beta02

23 февраля 2022 г.

Выпущены данные "androidx.camera:camera-*:1.1.0-beta02". Версия 1.1.0-beta02 содержит эти коммиты.

Изменения в API

  • Добавлена возможность указывать идентификатор физической камеры через Camera2Interop. (I5aed8)

Исправление ошибок

  • Исправлена проблема с растянутым изображением в режиме предварительного просмотра на Oppo Find N (I7d004).
  • Исправлена ошибка, из-за которой на устройствах Galaxy J7 Prime искажалось изображение в режиме предварительного просмотра. (I4c500)
  • Используйте совместимый битрейт, чтобы найти видеокодер. (d969052)

Версия 1.1.0-beta01

26 января 2022 г.

Выпущены данные "androidx.camera:camera-*:1.1.0-beta01". Версия 1.1.0-beta01 содержит эти коммиты.

Новые функции

  • Начиная с версии 1.1.0-beta01, все библиотеки CameraX будут иметь одинаковый номер версии. Это упростит отслеживание версий и позволит избежать путаницы с совместимостью.

Изменения в API

  • Добавлен метод Camera2CameraControl.clearCaptureRequestOptions для очистки существующих параметров запроса на запись. (Ifa07d)

Исправление ошибок

  • Исправлена ошибка, из-за которой происходил сбой при записи видео на некоторых устройствах с версией Android ниже 8.0(API 26). (I88fdf, b/212328261)
  • Исправлена проблема с неправильной областью автофокусировки при использовании cameraControl#startFocusAndMetering() на фронтальной камере устройств Samsung (Ifbf59, b/210548792).
  • Использование фонарика в качестве вспышки на Pixel 3a и Pixel 3a XL для повышения скорости съемки и качества изображения в темноте (Ib12b6, b/211474332).
  • Приложения могут возобновлять работу камеры, если она была прервана другим приложением с более высоким приоритетом в многооконном режиме и фокус вернулся к приложению. Обратите внимание, что из-за проблем с фреймворком между сменой фокуса и повторным открытием камеры может пройти от 1 до 10 секунд или больше. (I4d092)

Версия 1.1.0-alpha12

15 декабря 2021 г.

Выпущены данные "androidx.camera:camera-*:1.1.0-alpha12". Версия 1.1.0-alpha12 содержит эти коммиты.

Изменения в API

  • Удалены ненужные аннотации @RequiresApi(21) из внутренних классов и интерфейсов. (I8e286, b/204917951)
  • Константы качества и резервной стратегии QualitySelector теперь представлены объектами класса. Например, QualitySelector.QUALITY_HD заменяется на Quality.HD, а QualitySelector.FALLBACK_STRATEGY_LOWER – на экземпляр, возвращаемый FallbackStrategy.lowerQualityOrHigherThan(Quality). API, используемый для создания QualitySelector, был изменен на API на основе списков. Новый API QualitySelector.fromOrderedList(List<Quality>) будет ссылаться на порядок списка качества входных данных, а не на порядок, созданный QualitySelector.Procedure. Удален класс QualitySelector.Procedure. (I43343)
  • Метод PendingRecording.withEventListener() был удален, и теперь прослушиватель событий должен передаваться в PendingRecording.start(). Это требование к прослушивателю событий призвано упростить обработку асинхронных ошибок, которые регистрируются в событии VideoRecordEvent.Finalize. (I1e71d)
  • ActiveRecording переименован в Recording, чтобы сократить многословие. (I77ceb)

Исправление ошибок

  • Исправлена ошибка, из-за которой фотографии, сделанные в режиме "FLASH_AUTO" при слабом освещении на Pixel 3a и Pixel 3a XL, получались недоэкспонированными (I13f19, b/205373142).
  • Для предварительного просмотра всегда используйте последний размер объявления Resolution. (I4a694)
  • Камеры, у которых нет REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE, отфильтрованы. Камеры с REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE имеют минимальный набор возможностей, которые поддерживает каждая камера. Камера без REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE может быть камерой для поддержки специальных функций и не поддерживать стандартный цветной вывод. CameraX не поддерживает сценарии использования Preview, ImageCapture, ImageAnalysis и VideoCapture для этих камер. Поэтому такие камеры следует отфильтровать, чтобы предотвратить неправильное использование. (Ib8cda)
  • CameraSelector#filter больше не выдает IllegalArgumentException, если набор результатов пуст. (I27804)
  • Для выбора настроек кодировщика на основе профилей, заданных OEM, теперь используются более умные эвристики. (Iaeef0)
  • Исправлена ошибка, из-за которой на Pixel 1 при начале записи видео в формате UHD на экране предварительного просмотра появлялись цветные полосы. (I833c6, b/205340278)

Версия 1.1.0-alpha11

17 ноября 2021 г.

Выпущены данные "androidx.camera:camera-*:1.1.0-alpha11". Версия 1.1.0-alpha11 содержит эти коммиты.

Изменения в API

  • В общедоступный API добавлен метод CameraSelector#filter, позволяющий фильтровать список CameraInfo на основе CameraSelector. (I105d0)
  • Добавлен API setOutputImageRotationEnabled для конфигурации ImageAnalysis. Пользователь может включить поворот для буфера изображений YUV/RGB. Угол поворота – это относительный поворот, рассчитанный на основе поворота датчика и целевого поворота, чтобы изображение оставалось впереди.

  • Добавлен API setOutputImageRotationEnabled для конфигурации ImageAnalysis. Пользователь может включить поворот для буфера изображений YUV/RGB. Угол поворота – это относительный поворот, рассчитанный на основе поворота датчика и целевого поворота, чтобы изображение оставалось впереди.

    Добавлен API getSensorToBufferTransformMatrix в ImageInfo. Возвращаемая матрица представляет собой сопоставление координат датчика с координатами буфера, то есть от значения CameraCharacteristics.SENSOR_INFO_ACTIVE_ARRAY_SIZE до (0, 0, image.getWidth, image.getHeight). Матрицу можно использовать для сопоставления координат из одного {UseCase} с другим. Например, сопоставление координат лица, обнаруженного с помощью ImageAnalysis, с предварительным просмотром. (I9ff1e)

  • Добавлен новый API ImageCapture.Builder#setJpegQuality, позволяющий изменять качество сжатия выходного изображения JPEG при съемке. (I8dcf4)

  • Метод MediaStoreOutputOptions.getCollection переименован в MediaStoreOutputOptions.getCollectionUri. (I16639)

Исправление ошибок

  • Исправлена ошибка, из-за которой вспышка срабатывала при фокусировке по нажатию (startFocusAndMetering), если был выбран режим "Авто" или "Всегда включена" в условиях низкой освещенности. (Id4c11)
  • Отключен режим HDR+ на Pixel 2 XL и Pixel 3 XL в режиме MINIMIZE_LATENCY для уменьшения задержки. (Ib6270, b/203505523)

Внешний вклад

Версия 1.1.0-alpha10

13 октября 2021 г.

Выпущены данные "androidx.camera:camera-*:1.1.0-alpha10". Версия 1.1.0-alpha10 содержит эти коммиты.

Новые функции

  • Выпущена первая альфа-версия androidx.camera:camera-video:1.1.0-alpha10 для видео. Существует несколько известных проблем, которые будут устранены в следующих выпусках.

Изменения в API

  • Добавлена аннотация @RequiresApi(21) для всех классов CameraX, а minSdkVersion удален из AndroidManifest.xml. Это позволит легко интегрировать camera-core в приложения, у которых для атрибута minSdkVersion задано значение ниже 21, но которые хотят условно использовать пути выполнения, зависящие от API 21 и выше. Если у вас приложение с minSdkVersion 21 или выше, никаких действий не требуется. (Ie7f2e, b/200599470)

Исправление ошибок

  • Вызовите InitializationException, чтобы приложение могло корректно обработать AssertionError, возникшую при создании CameraCharacteristics. (Ibec79)

Версия 1.1.0-alpha09

29 сентября 2021 г.

Выпущены androidx.camera:camera-camera2:1.1.0-alpha09, androidx.camera:camera-core:1.1.0-alpha09 и androidx.camera:camera-lifecycle:1.1.0-alpha09. Версия 1.1.0-alpha09 содержит эти коммиты.

Изменения в API

  • Аннотация ExperimentalUseCaseGroup удалена, поскольку API больше не являются экспериментальными. (I01ef5)

Исправление ошибок

  • Устраните проблему, из-за которой фотографии, сделанные в режиме "MAXIMIZE_QUALITY", получаются размытыми. (I173a9, b/193823892)
  • Исправлена ошибка, из-за которой на Samsung Galaxy J5 камера зависала после съемки со вспышкой или в автоматическом режиме в темноте (I3aab9).
  • Если для ImageCapture требуется кадрирование, сжатие выходного кадрированного изображения с указанным уровнем качества JPEG в соответствии с заданным режимом захвата. Если выбран режим съемки CAPTURE_MODE_MINIMIZE_LATENCY, качество сжатия JPEG будет равно 95. Если выбран режим съемки CAPTURE_MODE_MAXIMIZE_QUALITY, качество сжатия JPEG будет равно 100. (Ieb37c, b/142856426)

Версия 1.1.0-alpha08

18 августа 2021 г.

Выпущены androidx.camera:camera-camera2:1.1.0-alpha08, androidx.camera:camera-core:1.1.0-alpha08 и androidx.camera:camera-lifecycle:1.1.0-alpha08. Версия 1.1.0-alpha08 содержит эти коммиты.

Новые функции

  • Добавлен API setOutputImageFormat для настройки анализа изображений. Пользователь может выбрать ImageAnalysis.OUTPUT_IMAGE_FORMAT_YUV_420_888 или ImageAnalysis.OUTPUT_IMAGE_FORMAT_RGBA_8888. По умолчанию будет выбран ImageAnalysis.OUTPUT_IMAGE_FORMAT_YUV_420_888. (I7902d)

Изменения в API

  • Аннотация ExperimentalUseCaseGroupLifecycle удалена, поскольку API больше не являются экспериментальными. (I17b85)

Исправление ошибок

  • Исправлена ошибка, из-за которой экран предварительного просмотра был слишком ярким на Huawei P20 Lite. Эта проблема возникает только в том случае, если определенные разрешения предварительного просмотра используются вместе с большим значением масштаба. (Idefce, b/192129158)
  • Исправлена ошибка, из-за которой вспышка не работала на некоторых устройствах, если режим FLASH_MODE_ON был включен незадолго до съемки. (Ieb49b)
  • Исправлена ошибка, из-за которой предварительный просмотр приостанавливался на некоторое время при съемке фотографий, если VideoCapture, ImageCapture и Preview были связаны. (I56197, b/193864120)
  • Позволяет ImageAnalysis выбирать разрешение выше 1080p. Устройство уровня LIMITED может поддерживать разрешение RECORD для ImageAnalysis, если оно связано с Preview и ImageCapture. Компромисс заключается в том, что выбранное разрешение для ImageCapture также должно быть разрешением размера RECORD. Чтобы выбрать разрешение RECORD для ImageAnalysis, необходимо установить целевое разрешение RECORD как для ImageCapture, так и для ImageAnalysis. Это означает, что приложение четко понимает компромисс и предпочитает, чтобы ImageAnalysis имел большее разрешение, а не ImageCapture имел МАКСИМАЛЬНОЕ разрешение. Определения RECORD, MAXIMUM и другие сведения можно найти на странице https://developer.android.com/reference/android/hardware/camera2/CameraDevice#regular-capture. Размер RECORD – это максимальное разрешение записи, поддерживаемое камерой, которое определяется CamcorderProfile. Максимальный размер – это максимальное разрешение, которое камера может выдать для этого формата или цели из StreamConfigurationMap.getOutputSizes(int). (I1ee97, b/192911449)
  • Добавьте информацию EXIF к снятому изображению. (I01ff0, b/193342619)
  • В ImageCapture возвращается URI сохраненного изображения, если местом сохранения является файл. (Ib5b49, b/149241379)
  • Исправлена ошибка, из-за которой на многих устройствах снимки со вспышкой получались темными. (I4e510)

Версия 1.1.0-alpha07

21 июля 2021 г.

Выпущены androidx.camera:camera-camera2:1.1.0-alpha07, androidx.camera:camera-core:1.1.0-alpha07 и androidx.camera:camera-lifecycle:1.1.0-alpha07. Версия 1.1.0-alpha07 содержит эти коммиты.

Исправление ошибок

  • Исправлена ошибка, из-за которой на Samsung Galaxy Note 5 камера зависала после съемки со вспышкой или в автоматическом режиме в темноте (If6871).
  • Исправлена ошибка YuvToJpegProcessor EOFException, возникавшая, когда включен режим расширения и задан режим ImageCapture#CAPTURE_MODE_MAX_QUALITY. (I538bd, b/192017012)

Версия 1.1.0-alpha06

30 июня 2021 г.

Выпущены androidx.camera:camera-camera2:1.1.0-alpha06, androidx.camera:camera-core:1.1.0-alpha06 и androidx.camera:camera-lifecycle:1.1.0-alpha06. Версия 1.1.0-alpha06 содержит эти коммиты.

Изменения в API

  • Продвижение экспериментальных API экспокоррекции для camera-core (I08ee8).
  • В CameraInfo добавлен API isFocusMeteringSupported, который позволяет приложениям проверять, поддерживается ли FocusMeteringAction на текущей камере. (Ib45ae, b/188606490)
  • Добавлен API getResolutionInfo, который предоставляет информацию о разрешении для Preview, ImageCapture и ImageAnalysis. (I2b613, b/188600718)
  • Следующие экспериментальные API стали официальными: CameraXConfig.Builder#setAvailableCamerasLimiter(), CameraXConfig.Builder#setMinimumLoggingLevel(), CameraXconfig.Builder#setSchedulerHandler(), CameraXConfig#getAvailableCamerasLimiter(), CameraXConfig#getMinimumLoggingLevel(), CameraXConfig#getCameraExecutor(), CameraXConfig#getSchedulerHandler() (I2ade2).
  • Добавлен интерфейс CameraProvider, предоставляющий доступ к набору камер. (I1a7b1)
  • Продвижение экспериментального UseCaseGroup API для camera-core, camera-lifecycle и camera-video. Добавлены метатеги ViewPort#getLayoutDirection, ViewPort.Builder#setLayoutDirection и ViewPort.Builder#setScaleType для настройки области просмотра. (I7cee8)

Версия 1.1.0-alpha05

2 июня 2021 г.

Выпущены androidx.camera:camera-camera2:1.1.0-alpha05, androidx.camera:camera-core:1.1.0-alpha05 и androidx.camera:camera-lifecycle:1.1.0-alpha05. Версия 1.1.0-alpha05 содержит эти коммиты.

Изменения в API

  • Удален класс Camera2CameraFilter. Рекомендуем выбирать камеру с помощью CameraFilter и получать CameraCharacteristics или другую информацию, связанную с Camera2, через Camera2CameraInfo, если это необходимо. (Ib887c)
  • ExperimentalCameraFilter API больше не являются экспериментальными и стали официальными. Их можно использовать без аннотации OptIn. (I4bc94)
  • Добавлен API состояния камеры, доступный через CameraInfo#getCameraState(). (Ia86b4)
  • Добавлен экспериментальный API CameraInfo#getCameraSelector(), который возвращает CameraSelector, уникальный для своей камеры (I77f9f).

Исправление ошибок

  • Исправлена ошибка, из-за которой ListenableFuture, возвращаемый в setZoomRatio и setLinearZoom, не мог завершиться на некоторых устройствах Android 11 (I716d7).
  • Ускорена смена камер и снижена частота ошибок камеры (I34c99).
  • Класс ExperimentalUseCaseGroupLifecycle заменен на ExperimentalUseCaseGroup. (I3b2ef, b/159033688)

Версия 1.1.0-alpha04

21 апреля 2021 г.

Выпущены androidx.camera:camera-camera2:1.1.0-alpha04, androidx.camera:camera-core:1.1.0-alpha04 и androidx.camera:camera-lifecycle:1.1.0-alpha04. Версия 1.1.0-alpha04 содержит эти коммиты.

Исправление ошибок

  • Исправлена утечка памяти, вызванная одновременным доступом нескольких потоков к одной коллекции. Из-за утечки памяти объект Activity или Fragment может остаться в экземпляре Preview. (I7b4b8)
  • Аннотация @Experimental заменена на @RequiresOptIn для экспериментальных API. Для вызова экспериментальных API используйте androidx.annotation.OptIn вместо устаревшего androidx.annotation.experimental.UseExperimental. Iff226
  • Исправлена ошибка, из-за которой при съемке на Samsung Galaxy S7 с включенной или автоматической вспышкой получались блеклые изображения. (I30001)
  • Добавлен API CameraState, который будет доступен через CameraInfo. (I75392)

Версия 1.1.0-alpha03

24 марта 2021 г.

Выпущены androidx.camera:camera-camera2:1.1.0-alpha03, androidx.camera:camera-core:1.1.0-alpha03 и androidx.camera:camera-lifecycle:1.1.0-alpha03. Версия 1.1.0-alpha03 содержит эти коммиты.

Исправление ошибок

  • Вывод в формате JPEG для ImageCapture#OnImageCapturedCallback, когда включен режим расширений. (I0d7b1)
  • Исправлена ошибка инициализации на устройствах UMIDIGI BISON (I57d9e, b/180818665).
  • Исправлена ошибка, из-за которой на устройствах Samsung A3 изображение в PreviewView растягивалось. (Iacb30, b/180121821)

Версия 1.1.0-alpha02

24 февраля 2021 г.

Выпущены androidx.camera:camera-camera2:1.1.0-alpha02, androidx.camera:camera-core:1.1.0-alpha02 и androidx.camera:camera-lifecycle:1.1.0-alpha02. Версия 1.1.0-alpha02 содержит эти коммиты.

Изменения в API

  • Добавлен API ProcessCameraProvider.getAvailableCameraInfos(), позволяющий напрямую получать информацию о доступных камерах. Это могут быть все камеры устройства или те, которые выбраны с помощью CameraSelector, указанного в CameraXConfig.Builder.setAvailableCamerasLimiter(CameraSelector). (Ieac08)

Исправление ошибок

  • Теперь CameraX пытается принудительно открыть камеру при первой попытке. Это может привести к тому, что CameraX заберет камеру у других клиентов, если у приложения CameraX более высокий приоритет. (Iab069, b/175820568)
  • Исправлена ошибка, из-за которой тест Robolectric завершался сбоем, если в CameraXConfig использовался метод setAvailableCamerasLimiter. (Ice307)
  • Это изменение перехватывает исключение, когда очередь изображений в ImageAnalysis заполнена. Поэтому вместо сбоя вы можете заметить, что другие функции зависают или работают медленно. Например, это может происходить с предварительным просмотром. (Ic12da, b/175851631)
  • Исправлена ошибка, из-за которой ExtensionsErrorListener сообщал об ошибках, когда привязаны только Preview или ImageCapture. (I5ae39)
  • Исправлена проблема с производительностью ImageCapture: теперь место сохранения изображения не проверяется перед съемкой. Если после этого изменения место сохранения будет недействительным, ответ об ошибке будет получен позже, поскольку попытка сохранить изображение будет предпринята после того, как будет сделана фотография. (I1fd4e, b/177061560)
  • Исправлена регрессия производительности ImageCapture с OutputFileOptions типа File. (I5164a, b/177061560)
  • В документацию добавлена рекомендация не использовать ProcessCameraProvider.configureInstance(...) из кода библиотеки. (Ib8a9f)

Версия 1.1.0-alpha01

27 января 2021 г.

Выпущены androidx.camera:camera-camera2:1.1.0-alpha01, androidx.camera:camera-core:1.1.0-alpha01 и androidx.camera:camera-lifecycle:1.1.0-alpha01. Версия 1.1.0-alpha01 содержит эти коммиты.

Исправление ошибок

  • Добавлено временное решение для периодического повреждения данных изображений в формате JPEG на задней камере SM-G930T. (I52001, b/159831206)
  • Устранена IllegalArgumentException проблема, которая возникала, когда все поддерживаемые размеры предварительного просмотра были меньше 640 x 480, а размер экрана – больше 640 x 480. (I2a63c, b/150506192)
  • Ресурсы в библиотеках, не имеющие явно объявленных общедоступных ресурсов (например, через public.xml), теперь по умолчанию являются частными. (Ia1dcc, b/170882230)

Camera-Camera2, Camera-Core и Camera-Lifecycle версии 1.0.2

Версия 1.0.2

29 сентября 2021 г.

Выпущены androidx.camera:camera-camera2:1.0.2, androidx.camera:camera-core:1.0.2 и androidx.camera:camera-lifecycle:1.0.2. Версия 1.0.2 содержит эти коммиты.

Исправление ошибок

  • Устраните проблему, из-за которой фотографии, сделанные в режиме "MAXIMIZE_QUALITY", получаются размытыми. (I173a9, b/193823892)
  • Исправлена ошибка, из-за которой на многих устройствах фотографии со вспышкой получались темными. (I4e510)

Camera-Camera2, Camera-Core и Camera-Lifecycle версии 1.0.1

Версия 1.0.1

21 июля 2021 г.

Выпущены androidx.camera:camera-camera2:1.0.1, androidx.camera:camera-core:1.0.1 и androidx.camera:camera-lifecycle:1.0.1. Версия 1.0.1 содержит эти коммиты.

Исправление ошибок

  • Исправлена ошибка, из-за которой ListenableFuture, возвращенный в setZoomRatio и setLinearZoom, не мог завершиться на некоторых устройствах Android 11 (I716d7).

  • Исправлена ошибка, из-за которой на некоторых устройствах камера зависала в состоянии закрытия, что приводило к черному экрану предварительного просмотра. (I34c99)

Camera-Camera2, Camera-Core и Camera-Lifecycle версии 1.0.0

Версия 1.0.0

5 мая 2021 г.

Выпущены androidx.camera:camera-camera2:1.0.0, androidx.camera:camera-core:1.0.0 и androidx.camera:camera-lifecycle:1.0.0. Версия 1.0.0 содержит эти коммиты.

Основные функции версии 1.0.0

Известные проблемы

Версия 1.0.0-rc05

21 апреля 2021 г.

Выпущены androidx.camera:camera-camera2:1.0.0-rc05, androidx.camera:camera-core:1.0.0-rc05 и androidx.camera:camera-lifecycle:1.0.0-rc05. Версия 1.0.0-rc05 содержит эти коммиты.

Исправление ошибок

  • Исправлена ошибка, из-за которой при съемке на Samsung Galaxy S7 с включенной или автоматической вспышкой получались блеклые изображения. (I30001)

Версия 1.0.0-rc04

24 марта 2021 г.

Выпущены androidx.camera:camera-camera2:1.0.0-rc04, androidx.camera:camera-core:1.0.0-rc04 и androidx.camera:camera-lifecycle:1.0.0-rc04. Коммиты, вошедшие в версию 1.0.0-rc04

Исправление ошибок

  • Исправлена ошибка инициализации на устройствах UMIDIGI BISON (I57d9e, b/180818665).

Версия 1.0.0-rc03

24 февраля 2021 г.

Выпущены androidx.camera:camera-camera2:1.0.0-rc03, androidx.camera:camera-core:1.0.0-rc03 и androidx.camera:camera-lifecycle:1.0.0-rc03. Версия 1.0.0-rc03 содержит эти коммиты.

Исправление ошибок

  • Исправьте ошибку форматирования в документе (ProcessCameraProvider#getInstance)
  • Исправлена ошибка, из-за которой тест Robolectric завершался сбоем, если в CameraXConfig использовался метод setAvailableCamerasLimiter.
  • Исправлена проблема с производительностью ImageCapture: теперь место сохранения изображения не проверяется перед съемкой. Если после этого изменения место сохранения будет недействительным, ответ об ошибке будет получен позже, поскольку попытка сохранить изображение будет предпринята после того, как будет сделана фотография.
  • Это изменение перехватывает исключение, когда очередь изображений в ImageAnalysis заполнена. Поэтому вместо сбоя вы можете заметить, что другие функции работают медленно или зависают, например предварительный просмотр.
  • Добавлено временное решение для периодического повреждения данных изображений в формате JPEG на задней камере SM-G930T. (I52001, b/159831206)
  • Это изменение перехватывает исключение, когда очередь изображений в ImageAnalysis заполнена. Поэтому вместо сбоя вы можете заметить, что другие функции зависают или работают медленно. Например, это может происходить с предварительным просмотром. (Ic12da, b/175851631)
  • Исправлена ошибка, из-за которой тест Robolectric завершался сбоем, если в CameraXConfig использовался метод setAvailableCamerasLimiter. (Ice307)
  • Исправлена проблема с производительностью ImageCapture: теперь место сохранения изображения не проверяется перед съемкой. Если после этого изменения место сохранения будет недействительным, ответ об ошибке будет получен позже, поскольку попытка сохранить изображение будет предпринята после того, как будет сделана фотография. (I1fd4e, b/177061560)
  • Исправлена регрессия производительности ImageCapture с OutputFileOptions типа File. (I5164a, b/177061560)

Версия 1.0.0-rc02

27 января 2021 г.

Выпущены androidx.camera:camera-camera2:1.0.0-rc02, androidx.camera:camera-core:1.0.0-rc02 и androidx.camera:camera-lifecycle:1.0.0-rc02. Версия 1.0.0-rc02 содержит эти коммиты.

Исправление ошибок

  • Исправлена ошибка IllegalArgumentException, которая возникала, когда все поддерживаемые размеры предварительного просмотра были меньше 640 x 480, а размер экрана – больше 640 x 480. (b/150506192)
  • Ограничить количество попыток повторного открытия камеры. При попытке устранить некоторые проблемы, возникающие при открытии камеры, CameraX больше не будет пытаться открыть камеру бесконечно. Вместо этого попытки прекратятся через 10 секунд. I435d2

  • Устранена проблема с IllegalArgumentException, которая возникала, когда все поддерживаемые размеры для предварительного просмотра были меньше 640 x 480, а размер экрана – больше 640 x 480. (I2a63c, b/150506192)

Версия 1.0.0-rc01

16 декабря 2020 г.

Выпущены androidx.camera:camera-camera2:1.0.0-rc01, androidx.camera:camera-core:1.0.0-rc01 и androidx.camera:camera-lifecycle:1.0.0-rc01. Версия 1.0.0-rc01 содержит эти коммиты.

Изменения в API

  • Изменены CameraFilter и Camera2Filter для получения CameraInfo. (I6883d)
  • Добавлен экспериментальный класс Camera2CameraControl, позволяющий динамически взаимодействовать с Camera2 API. (I45cf3)
  • Метод Camera2CameraInfo#fromCameraInfo переименован в #from. (Ia2bd6)
  • В CameraXConfig добавлен экспериментальный API setAvailableCamerasLimiter, который позволяет приложениям оптимизировать задержку инициализации, не инициализируя неиспользуемые камеры. (I6cf88)
  • Добавлен экспериментальный метод CameraXConfig.Builder#setMinimumLoggingLevel(), позволяющий задать минимальный уровень ведения журналов CameraX. Если значение не задано, по умолчанию используется Log#DEBUG. (Ic3245)

Исправление ошибок

  • Добавлено временное решение для периодического повреждения данных изображений в формате JPEG на задней камере SM-G930V. (I5aca5, b/159831206)
  • Исправлена ошибка, из-за которой на устройствах Samsung SM-A716 не удавалось получить результаты при съемке со вспышкой в темноте. (If98b2, b/172036589)
  • Исправлена ошибка, из-за которой предварительный просмотр нельзя было остановить с помощью вызова Preview.setSurfaceProvider(null). (I3ac18)
  • Исправлена проблема с ориентацией при съемке изображений 4:3 на некоторых устройствах. (I0e3fb, b/171492111)

Camera Camera2, Core и Lifecycle версии 1.0.0-beta12

11 ноября 2020 г.

Выпущены androidx.camera:camera-camera2:1.0.0-beta12, androidx.camera:camera-core:1.0.0-beta12 и androidx.camera:camera-lifecycle:1.0.0-beta12. Версия 1.0.0-beta12 содержит эти коммиты.

Исправление ошибок

  • Отключена автоматическая вспышка на устройствах Samsung A3, чтобы устранить сбой при съемке с автоматической вспышкой в режиме AE. (Ia5fe3, b/157535165)
  • Исправлена ошибка, из-за которой изображение в режиме предварительного просмотра растягивалось на устройствах Nexus 4 с Android L (уровни API 21 и 22). (I4d407, b/158749159)
  • OnImageCapturedCallback#onCaptureSuccess базовый класс больше не закрывает изображение. Это сделано для того, чтобы предотвратить неожиданное поведение для разработчиков. Разработчикам не следует полагаться на super.onCaptureSuccess для закрытия изображения. (Ifbf9c)
  • Вариант androidx аннотации Experimental был объявлен устаревшим, чтобы обеспечить паритет с Kotlin. Вместо нее теперь используется аннотация RequiresOptIn, а линтер для Java был обновлен и теперь поддерживает как новую аннотацию Kotlin, так и новый вариант androidx. (I52495, b/151331381)

Camera-Camera2 версии 1.0.0-beta11

14 октября 2020 г.

Выпущены данные "androidx.camera:camera-camera2:1.0.0-beta11". Версия 1.0.0-beta11 содержит эти коммиты.

Новые функции

  • Поддерживает API CONTROL_ZOOM_RATIO для Android 11, чтобы использовать масштабирование на устройствах с Android 11 или более поздней версии, на которых есть действительный CONTROL_ZOOM_RATIO_RANGE. (I62cc6)

Исправление ошибок

  • Исправлена ошибка NumberFormatException, возникавшая, когда идентификатор камеры не был целым числом. (Ib2228)
  • Уменьшена задержка при инициализации CameraX и bindToLifecycle (I61dc5).
  • Для создания UseCases не требуется инициализация CameraX. Все конфигурации, относящиеся к реализации, задаются в UseCase после его подключения к экземпляру Camera, который для общедоступного API является ProcessCameraProvider.bindToLifecycle(). (Ia5411)
  • <UseCase>.getTargetRotation() вернет Surface.ROTATION_0, если будет вызван до подключения к экземпляру Camera, за исключением случаев, когда targetRotation задан в Builder или UseCase. (I80fcd)

Camera-Core версии 1.0.0-beta11

14 октября 2020 г.

Выпущены данные "androidx.camera:camera-core:1.0.0-beta11". Версия 1.0.0-beta11 содержит эти коммиты.

Новые функции - Поддержка API CONTROL_ZOOM_RATIO для масштабирования на устройствах с Android 11 или более поздней версией, содержащих действительный CONTROL_ZOOM_RATIO_RANGE. (I62cc6)

Исправление ошибок

  • Исправлена ошибка NumberFormatException, возникавшая, когда идентификатор камеры не был целым числом. (Ib2228)
  • Для создания UseCases не требуется инициализация CameraX. Все конфигурации, относящиеся к реализации, задаются в UseCase после его подключения к экземпляру Camera, который для общедоступного API является ProcessCameraProvider.bindToLifecycle(). (Ia5411)
  • <UseCase>.getTargetRotation() вернет Surface.ROTATION_0, если будет вызван до подключения к экземпляру Camera, за исключением случаев, когда targetRotation задан в Builder или UseCase. (I80fcd)

Camera-Core версии 1.0.0-beta10

23 сентября 2020 г.

Выпущены данные "androidx.camera:camera-core:1.0.0-beta10". Версия 1.0.0-beta10 содержит эти коммиты.

Исправление ошибок

  • Исправлена ошибка проверки места сохранения файла при фотосъемке (I8c565, b/167697553).

Camera-Camera2 версии 1.0.0-beta10

23 сентября 2020 г.

Выпущены данные "androidx.camera:camera-camera2:1.0.0-beta10". Версия 1.0.0-beta10 содержит эти коммиты.

Исправление ошибок

Camera-Camera2 версии 1.0.0-beta09

16 сентября 2020 г.

Выпущены данные "androidx.camera:camera-camera2:1.0.0-beta09". Версия 1.0.0-beta09 содержит эти коммиты.

Изменения в API

  • Вместо статических методов Camera2CameraInfo принимает экземпляр CameraInfo, созданный для получения информации, связанной с Camera2. (I5b844)

Исправление ошибок

  • Исправлена проблема с целевым соотношением сторон на планшетах. Если целевое соотношение сторон – AspectRatio.RATIO_16_9, выберите размер 16:9. (Ib7fcf, b/151969438)
  • Вызовите InitializationException, чтобы приложение могло корректно обработать ошибку AssertionError, возникшую при создании CameraCharacteristics. (I89c8c, b/160524721)
  • Добавлены экспериментальные интерфейсы для ExposureCompensation (If96c7).

Camera-Core версии 1.0.0-beta09

16 сентября 2020 г.

Выпущены данные "androidx.camera:camera-core:1.0.0-beta09". Версия 1.0.0-beta09 содержит эти коммиты.

Изменения в API

  • Исправлена ошибка, из-за которой область просмотра помечалась как ненулевая в UseCaseGroup. Разработчики должны иметь возможность создавать область просмотра, не задавая ее. (Ie3d2e)
  • Добавлены экспериментальные интерфейсы для ExposureCompensation (If96c7).
  • Разрешить произвольный поворот цели для предварительного просмотра. Информация о преобразовании рассчитывается и возвращается пользователю в реальном времени с помощью нового обратного вызова TranformationInfoListener. (I21470)

Исправление ошибок

  • Исправлена ошибка, из-за которой на некоторых устройствах не выключалась вспышка. Это происходило, если при съемке был выбран режим FLASH_MODE_ON, а во время срабатывания вспышки он менялся на FLASH_MODE_OFF. Проблема похожа на включенный режим фонарика. (Ib4451, b/162568128)
  • Принудительное использование TextureView в PreviewView, если включен эффект расширения и реализация библиотеки поставщика требует специальной обработки выходной поверхности. (I0c3cc)
  • Устранена утечка activity/fragment, когда контекст activity/fragment передается в ProcessCameraProvider.getInstance(Context).

Известные проблемы

  • Если задан ViewPort, прямоугольник кадрирования ImageCapture может быть неправильным на устройствах, которые поворачивают буфер изображения в HAL. В следующей версии проблема будет устранена.

Camera-Camera2 версии 1.0.0-beta08

19 августа 2020 г.

Выпущены данные "androidx.camera:camera-camera2:1.0.0-beta08". Версия 1.0.0-beta08 содержит эти коммиты.

Исправление ошибок

  • Оптимизирован метод bindToLifecycle для быстрого выполнения в основном потоке. (I1d57e)
  • DisplayOrientedMeteringPointFactory принимает экземпляр CameraInfo вместо CameraSelector, поэтому существует прямое сопоставление с тем, для какой камеры фабрика будет генерировать точки. Все классы, использующие DisplayOrientedMeteringPointFactory, также принимают экземпляр CameraInfo вместо CameraSelector. (I400c1)
  • Исправлена ошибка, из-за которой при автоматическом выборе разрешения с соотношением сторон 16:9 и кратностью 16 выбирался размер 864 x 480, если целевое разрешение было 2016 x 1080 и поддерживался другой размер 1920 x 1080 с соотношением сторон 16:9. (I53167, b/159363774)
  • Исправлена ошибка, из-за которой CameraControl не работал в состоянии гонки (I2279f, b/152333890, b/160714166).

Camera-Core версии 1.0.0-beta08

19 августа 2020 г.

Выпущены данные "androidx.camera:camera-core:1.0.0-beta08". Версия 1.0.0-beta08 содержит эти коммиты.

Изменения в API

  • DisplayOrientedMeteringPointFactory принимает экземпляр CameraInfo вместо CameraSelector, поэтому существует прямое сопоставление с камерой, для которой фабрика будет генерировать точки. Все классы, использующие DisplayOrientedMeteringPointFactory, также принимают экземпляр CameraInfo вместо CameraSelector. (I400c1)

Исправление ошибок

  • Для фотосъемки перезапишите флаг горизонтального отражения в метаданных на основе направления камеры. (I28499)
  • Инициализация больше не должна приводить к сбою при использовании контекста, который не возвращает объект Application из Context.getApplicationContext(). (I3d3c9, b/160817073)

Camera-Camera2 версии 1.0.0-beta07

22 июля 2020 г.

Выпущены данные "androidx.camera:camera-camera2:1.0.0-beta07". Версия 1.0.0-beta07 содержит эти коммиты.

Исправление ошибок

  • Исправлена ошибка, из-за которой на устройствах с Android 5.0 растягивалось изображение в режиме предварительного просмотра. (I0c03a)
  • Исключены некоторые поддерживаемые размеры JPEG, которые вызывают проблемы с WYSIWYG на некоторых устройствах. (Ib5128)

Camera-Core версии 1.0.0-beta07

22 июля 2020 г.

Выпущены данные "androidx.camera:camera-core:1.0.0-beta07". Версия 1.0.0-beta07 содержит эти коммиты.

Изменения в API

  • Объедините FIT_CENTER, FIT_START и FIT_END с FIT. FIT означает, что возвращенный прямоугольник кадрирования будет максимально возможным прямоугольником датчика. (Ia73c3)
  • Прямоугольник кадрирования предварительного просмотра настраивается областью просмотра. Конечным пользователям должна быть видна только область, ограниченная рамкой кадрирования. (I142a4)

Исправление ошибок

  • Исправлена проблема, из-за которой изображение в режиме предварительного просмотра растягивалось на устройствах с Android 5.0. (I0c03a)
  • Исправлена ошибка, из-за которой при отмене привязки вариантов использования возникало исключение ConcurrentModificationException. (I371c0)

Camera-Camera2 версии 1.0.0-beta06

24 июня 2020 г.

Выпущены данные "androidx.camera:camera-camera2:1.0.0-beta06". Версия 1.0.0-beta06 содержит эти коммиты.

Изменения в API

  • Добавлены экспериментальные интерфейсы для фильтрации камер по идентификатору и характеристикам. (I28f61)

Исправление ошибок

  • Исправлена ошибка, из-за которой startFocusAndMetering не удавалось сфокусироваться на Samsung Galaxy S7. (If3be7, b/159039233)
  • Исправлена ошибка, из-за которой камера не закрывалась после выхода из приложения (I7a7b3).
  • Исправлена ошибка, из-за которой многократное переключение камеры нарушало работу предварительного просмотра при использовании реализации SurfaceView для PreviewView (I920ce).
  • CameraControl#startFocusAndMetering не сработает, если ни один из указанных объектов MeteringPoint не сможет сгенерировать допустимые прямоугольники замера. (Id53ce)

Camera-Core версии 1.0.0-beta06

24 июня 2020 г.

Выпущены данные "androidx.camera:camera-core:1.0.0-beta06". Версия 1.0.0-beta06 содержит эти коммиты.

Изменения в API

  • Добавлены экспериментальные интерфейсы для фильтрации камер по идентификатору и характеристикам. (I28f61)

Исправление ошибок

  • Теперь CameraX можно настроить с помощью ProcessCameraProvider#configureInstance() перед вызовом ProcessCameraProvider#getInstance(). Это позволяет настраивать CameraXConfig без необходимости реализовывать CameraXConfig.Provider в классе Application приложения. (Ia1a8d)
  • CameraControl#startFocusAndMetering не сработает, если ни один из указанных объектов MeteringPoint не сможет сгенерировать допустимые прямоугольники замера. (Id53ce)

Camera-Camera2 версии 1.0.0-beta05

10 июня 2020 г.

Выпущены данные "androidx.camera:camera-camera2:1.0.0-beta05". Версия 1.0.0-beta05 содержит эти коммиты.

Исправление ошибок

  • Исправлен сбой при запуске приложения, когда CameraX инициализируется в режиме "Не беспокоить". Объект InitializationException содержит свойство CameraUnavailableException, которому будет присвоено значение ListenableFuture результата инициализации, чтобы предотвратить сбой приложения. (I9909a, b/149413835)
  • Исправлена ошибка, возникающая при вызове startFocusAndMetering на устройствах, где CONTROL_AF_STATE имеет значение null. (Ife55e, b/157084254)

Camera-Core версии 1.0.0-beta05

10 июня 2020 г.

Выпущены данные "androidx.camera:camera-core:1.0.0-beta05". Версия 1.0.0-beta05 содержит эти коммиты.

Изменения в API

  • Исправлен сбой при запуске приложения, когда CameraX инициализируется в режиме "Не беспокоить". Если InitializationException содержит CameraUnavailableException, то вместо сбоя приложения будет задано значение ListenableFuture результата инициализации. (I9909a, b/149413835)

Исправление ошибок

  • Обновлены Javadoc для setTargetResolution и setTargetRotation. (Iae16f)

Camera-Camera2 версии 1.0.0-beta04

27 мая 2020 г.

Выпущены данные "androidx.camera:camera-camera2:1.0.0-beta04". Версия 1.0.0-beta04 содержит эти коммиты.

Исправление ошибок

  • Разрешено приложениям устанавливать любые параметры запроса на съемку camera2 через Camera2Interop без сбоев. Обратите внимание, что при переопределении параметров могут возникнуть проблемы. При переопределении параметров с помощью Camera2Interop стабильность и поведение не гарантируются. (Ibe5a1, b/149103700)
  • Исправлена ошибка, из-за которой автоматическая инициализация не работала, если на устройстве использовался псевдорегион. (I3bef3, b/154767663)
  • Журнал ошибок, связанных с отсоединенным вариантом использования, преобразован в журнал отладки в Camera2CameraImpl. (I1a565, b/154422490)
  • Исправлена ошибка, из-за которой иногда получались слишком темные снимки, даже если использовалась вспышка. (I5d9fa, b/149729613)
  • Исправлена ошибка, из-за которой буфер в ImageProxy из ImageCapture не перематывался (I0c455, b/153249512).
  • Исправлены ошибки, возникавшие при привязке только ImageCapture: 1) не удавалось сделать снимки с MAX_QUALITY; 2) качество изображения было низким, так как не работала автоэкспозиция. (I17782, b/145326998)
  • Повышена надежность повторного открытия камеры, когда CameraX отключается другим процессом или путем кода, который использует камеру (I1fbc3, b/153714651).

Camera-Core версии 1.0.0-beta04

27 мая 2020 г.

Выпущены данные "androidx.camera:camera-core:1.0.0-beta04". Версия 1.0.0-beta04 содержит эти коммиты.

Изменения в API

  • Добавлен экспериментальный API CameraXConfig.Builder#setSchedulerHandler() для настройки обработчика, который используется внутри стека камеры CameraX. Этот новый API вместе с CameraXConfig.Builder#setCameraExecutor() должен позволить полностью контролировать потоки, используемые стеком камеры CameraX. (I7bf32, b/121160431)

Исправление ошибок

  • Исправлен сбой в ImageAnalysis, когда доступ к ImageProxy запрашивался после закрытия ImageReaderProxy. Это также означает, что все ImageProxy, полученные Analyzer, должны быть закрыты до закрытия ImageReaderProxy. (I4b299, b/145956416, b/154155377, b/156357269)
  • Из функции PreviewView#createSurfaceProvider() удален параметр CameraInfo. Теперь функция PreviewView получает его из SurfaceRequest. (If18f0, b/154652477)
  • Исправлена ошибка, из-за которой автоматическая инициализация не работала, если на устройстве использовался псевдорегион. (I3bef3, b/154767663)
  • Исправлена ошибка, из-за которой иногда получались слишком темные снимки, даже если использовалась вспышка. (I5d9fa, b/149729613)
  • Исправлена ошибка в ImageAnalysis, из-за которой при нескольких вызовах setAnalyzer/clearAnalyzer анализатор не получал изображения для анализа. (I6169f, b/151605317, b/153514544)
  • Исправлена ошибка, из-за которой буфер в ImageProxy из ImageCapture не перематывался (I0c455, b/153249512).
  • Исправлена ошибка, из-за которой не всегда выбиралась первая камера из списка поддерживаемых устройств в CameraManager. (I4c624, b/153418028)
  • Исправлена ошибка, из-за которой приложение иногда аварийно завершало работу, поскольку метод Preview.SurfaceProvider не освобождал ранее запрошенную поверхность. “java.lang.IllegalStateException: Camera surface session should only fail with request cancellation” (I8e4e7, b/155936225)

Camera-Camera2 версии 1.0.0-beta03

15 апреля 2020 г.

Выпущены данные "androidx.camera:camera-camera2:1.0.0-beta03". Версия 1.0.0-beta03 содержит эти коммиты.

Исправление ошибок

  • Исправления для поддержки выпуска camera-core.

Camera-Core версии 1.0.0-beta03

15 апреля 2020 г.

Выпущены данные "androidx.camera:camera-core:1.0.0-beta03". Версия 1.0.0-beta03 содержит эти коммиты.

Исправление ошибок

  • Исправлена регрессия из версии beta03, из-за которой вызов bindToLifecycle() с нулевым значением UseCase вызывал исключение. Это не позволяло получить Camera без привязки UseCase.

Camera-Camera2 версии 1.0.0-beta02

1 апреля 2020 г.

Выпущены данные "androidx.camera:camera-camera2:1.0.0-beta02". Версия 1.0.0-beta02 содержит эти коммиты.

Исправление ошибок

  • Исправлена ошибка, из-за которой ImageInfo.getRotationDegrees() из ImageProxy, созданного ImageCapture, не соответствовал значению поворота EXIF. (Id4281, b/150802561)
  • Чтобы использовать реализацию CameraX/Camera2 по умолчанию, больше не нужно явно указывать порядок зависимостей CameraX в файле build.gradle. В случаях, когда требуется объявить строгие зависимости, все зависимости CameraX теперь можно включить в файл сборки. (I46e88)
  • Исправлена ошибка IllegalArgumentException, возникавшая на устройствах с размером экрана меньше 640 x 480. (Ife3f2, b/150506192)
  • Исправлена ошибка, из-за которой bindToLifecycle изменял UseCase, даже если не мог выполнить привязку. Ранее при вызове bindToLifecycle для расчета разрешения обновлялся UseCase. Теперь для выполнения вычислений не нужно обновлять UseCase (I78d9e).

Camera-Core версии 1.0.0-beta02

1 апреля 2020 г.

Выпущены данные "androidx.camera:camera-core:1.0.0-beta02". Версия 1.0.0-beta02 содержит эти коммиты.

Исправление ошибок

  • Исправлена ошибка, из-за которой ImageInfo.getRotationDegrees() из ImageProxy, созданный ImageCapture, не соответствовал значению поворота EXIF. (Id4281, b/150802561)
  • Исправлена ошибка, из-за которой bindToLifecycle изменял UseCase, только если он успешно привязан. Ранее при вызове bindToLifecycle для расчета разрешения обновлялся UseCase. Теперь для выполнения вычислений не нужно обновлять UseCase (I78d9e).
  • Исправлена ошибка, из-за которой сеанс захвата для варианта использования Preview не обновлялся, когда область предварительного просмотра менялась после вызова Preview.setSurfaceProvider() более одного раза.

Camera-Camera2 версии 1.0.0-beta01

26 февраля 2020 г.

Выпущены данные "androidx.camera:camera-camera2:1.0.0-beta01". Версия 1.0.0-beta01 содержит эти коммиты.

Исправление ошибок

  • SurfaceRequest.setSurface(Surface) переименован в SurfaceRequest.provideSurface(Surface), а SurfaceRequest.setWillNotComplete() – в SurfaceRequest.willNotProvideSurface(). (I224fe)
  • Исправлена ошибка, из-за которой соотношение сторон сохраненного изображения было неправильным после изменения значения целевого поворота с помощью ImageCapture.setTargetRotation(). (I474ea, b/148763432)
  • Исправлена инициализация вариантов приложения с включенным ProGuard за счет сохранения флага, который задает поставщика CameraXConfig по умолчанию. (I2d6c1)

Camera-Core версии 1.0.0-beta01

26 февраля 2020 г.

Выпущены данные "androidx.camera:camera-core:1.0.0-beta01". Версия 1.0.0-beta01 содержит эти коммиты.

Изменения в API

  • ListenableFuture на SurfaceRequest.provideSurface() заменен на Executor и Callback. Это упрощает API, поскольку больше не требуется обрабатывать исключения в provideSurface(), и гарантирует, что обратный вызов provideSurface() не может быть отменен. Это позволяет предотвратить сбои на старых устройствах, вызванные преждевременным освобождением поверхностей. Объект SurfaceRequest.Result теперь используется для отслеживания того, как SurfaceRequest использует предоставленный Surface. (I7854b)
  • SurfaceRequest.setSurface(Surface) переименован в SurfaceRequest.provideSurface(Surface), а SurfaceRequest.setWillNotComplete() – в SurfaceRequest.willNotProvideSurface(). (I224fe)

Исправление ошибок

  • Исправлена ошибка, из-за которой соотношение сторон сохраненного изображения было неправильным после изменения значения целевого поворота с помощью ImageCapture.setTargetRotation(). (I474ea, b/148763432)
  • Исправлена инициализация вариантов приложения с включенным ProGuard за счет сохранения флага, который задает поставщика CameraXConfig по умолчанию. (I2d6c1)
  • В документацию по API режима вспышки добавлены возможные значения. (I4a3ec)

Camera-Camera2, версия 1.0.0-alpha10

10 февраля 2020 г.

Выпущены данные "androidx.camera:camera-camera2:1.0.0-alpha10". Версия 1.0.0-alpha10 содержит эти коммиты.

Исправление ошибок

  • Повышена стабильность на устройствах INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY за счет того, что Surface сохраняются только на время использования Camera2. (I9dac2)
  • Исправлена проблема с недоэкспонированным предпросмотром на устройствах LEGACY путем правильной настройки CONTROL_AE_TARGET_FPS_RANGE. (1224638)

Camera-Core версии 1.0.0-alpha10

10 февраля 2020 г.

Выпущены данные "androidx.camera:camera-core:1.0.0-alpha10". Версия 1.0.0-alpha10 содержит эти коммиты.

Изменения в API

  • В ImageCapture теперь можно сохранять изображения в Uri и OutputStream. Перегруженные методы takePicture объединены в один. Тестовое приложение обновлено, чтобы использовать Uri в качестве канонического примера. (Ia3bec)
  • Сервисный аккаунт Preview.PreviewSurfaceProvider переименован. Новое название: Preview.SurfaceProvider. Теперь разработчикам не нужно создавать собственные ListenableFuture для SurfaceProvider, а Surface предоставляется через новый объект SurfaceRequest. Метод Preview.getPreviewSurfaceProvider() удален, поскольку он может использоваться не по назначению, когда Preview сочетается с другими классами, например PreviewView. (I20105)
  • Добавлено: getTargetRotation() и getTargetName() в Preview. (Iceee7)
  • Добавлены getTargetRotation(), getBackpressureStrategy() и getImageQueueDepth() в ImageAnalysis. (I9d6d9)
  • Добавлены getTargetRotation() и getCaptureMode() в ImageCapture() (I5bc17)
  • Аргументы, которые ранее передавались в ImageCapture.OnImageSavedCallback.onError() и ImageCapture.OnImageCapturedCallback.onError(), теперь заменены одним аргументом ImageCaptureException, который по-прежнему содержит всю ранее передаваемую информацию.
  • Аргумент file, который ранее передавался в ImageCapture.OnImageSavedCallback.onImageSaved(), удален. (I750d2)
  • Классы Preview и ImageCapture теперь помечены как final. (I2500b)
  • Обновлен API. Методы getZoomRatio(), getMaxZoomRatio(), getMinZoomRatio() и getLinearZoom() класса CameraInfo объединены в метод getZoomState(), который возвращает экземпляр ZoomState. (Ib19fe)
  • Из CameraXConfig удалены поля API OPTION_TARGET_CLASS и OPTION_TARGET_NAME, поскольку они предназначены только для внутреннего использования в библиотеке. Удален конструктор для CameraXConfig.Builder. (I96912)
  • Удалено требование, согласно которому приложение должно расширять Application для инициализации CameraX. Теперь CameraX будет инициализироваться с конфигурацией Camera2 по умолчанию, если артефакт camera-camera2 включен в файл build.gradle приложения. (I58ff5) (b/146923574)

Camera-Camera2 версии 1.0.0-alpha09

22 января 2020 г.

Выпущены данные "androidx.camera:camera-camera2:1.0.0-alpha09". Коммиты, относящиеся к версии 1.0.0-alpha09

Изменения в API

  • Добавлен путь взаимодействия camera2 для извлечения идентификатора камеры Camera2. Вы можете извлечь идентификатор камеры из CameraInfo с помощью Camera2CameraInfo.extractCameraId(). Ниже приведен пример кода, показывающий, как это использовать.

    Camera camera = provider.bindToLifecycle(...);
    String cameraId =
        Camera2CameraInfo.extractCameraId(camera.getCameraInfo());
    

    Для класса Camera2CameraInfo требуется класс маркера ExperimentalCamera2Interop.

Camera-Core версии 1.0.0-alpha09

22 января 2020 г.

Выпущены данные "androidx.camera:camera-core:1.0.0-alpha09". Коммиты, вошедшие в версию 1.0.0-alpha09

Изменения в API

  • Параметр useCaseForSurface в SurfaceOrientedMeteringPointFactory переименован в useCaseForAspectRatio, а справочная документация расширена.
  • Методы FocusMeteringAction.Builder.from() заменены конструкторами FocusMeteringAction.Builder().
  • Удалено: DisplayOrientedMeteringPointFactory(android.content.Context, androidx.camera.core.CameraSelector, float, float). В приложениях следует использовать конструктор, который принимает параметр Display и передает текущий экран.
  • Улучшения Javadoc для API фокусировки и замера, касающиеся MeteringMode и флагов 3A, а также использования параметра Display.
  • Расширена справочная документация по setZoomRatio и setLinearZoom.

Исправление ошибок

  • Исправлены ошибки, возникавшие при закрытии и последующем открытии камер и приводившие к сбою проверки предварительных условий.
  • Исправлена ошибка ConcurrentModificationException, которая могла возникать при использовании API фонарика и масштабирования.
  • Исправлена ошибка, из-за которой не выбирались разрешения, близкие к запрошенному, когда был доступен размер mod16.
  • Теперь API startFocusMetering и cancelFocusMetering работают в соответствии с документацией, с правильным временем и потенциальным возвратом ошибок при их возникновении.
  • Исправлена ошибка, возникавшая, когда запрашивалось определенное целевое разрешение с соотношением сторон кадрирования на устройстве, которое не поддерживает такие размеры. Теперь, если доступно изображение без кадрирования с достаточным разрешением, чтобы ограничить исходный запрос, будет выбрано оно.

Camera-Camera2 версии 1.0.0-alpha08

18 декабря 2019 г.

Выпущены данные "androidx.camera:camera-camera2:1.0.0-alpha08". Версия 1.0.0-alpha08 содержит эти коммиты.

Известные проблемы

  • Не все параметры запроса на захват Camera2 работают при использовании взаимодействия Camera2. Если запрошенный параметр не поддерживается, сеанс не запустится и может возникнуть следующая ошибка: 09-09 14:04:13.643 10117 26020 26036 E AndroidRuntime: java.lang.IllegalArgumentException: Unsupported session configuration combination.

Исправление ошибок

  • Исправлена ошибка, из-за которой при повороте или переключении камеры на устройствах с уровнями API 21 и 22 в режиме предварительного просмотра появлялся черный экран.

Изменения в API

  • Экспериментальная функция. Добавлен путь взаимодействия camera2 для извлечения идентификатора камеры.

Camera-Core версии 1.0.0-alpha08;

18 декабря 2019 г.

Выпущены данные "androidx.camera:camera-core:1.0.0-alpha08". Версия 1.0.0-alpha08 содержит эти коммиты.

Известные проблемы

  • В приложениях, использующих PreviewView или CameraView, может быть неправильное соотношение сторон в режиме предварительного просмотра. Это происходит после приостановки или возобновления на некоторых устройствах с уровнем поддержки FULL, например Pixel 2.

Исправление ошибок

  • Обновлена документация по FocusMeteringAction и CameraControl.
  • Реализован метод TorchControl для enableTorch() и getTorchState().

Изменения в API

  • Скрыты IntDef и перемещены константы IntDef за пределы определения IntDef.
  • Пользователь rotationDegrees перемещен из курса "OnImageCaptureCallback" в курс "ImageInfo".
  • Пользователь rotationDegrees перемещен из курса "Analyzer" в курс "ImageInfo".

Camera-Camera2 версии 1.0.0-alpha07

4 декабря 2019 г.

Выпущены данные "androidx.camera:camera-camera2:1.0.0-alpha07". Версия 1.0.0-alpha07 библиотеки camera-camera2 содержит следующие коммиты

  • Теперь Camera2Config можно использовать для инициализации и настройки реализации CameraX на основе Camera2. Подробную информацию о том, как использовать это при инициализации, можно найти в разделе camera-core примечаний к выпуску.
  • Функция взаимодействия camera2 теперь помечена как экспериментальная и перенесена в отдельный пакет androidx.camera.camera2.interop..

Camera-Core версии 1.0.0-alpha07;

4 декабря 2019 г.

Выпущены данные "androidx.camera:camera-core:1.0.0-alpha07". Версия 1.0.0-alpha07 библиотеки camera-core содержит следующие коммиты

Обратите внимание, что в этой альфа-версии есть существенные изменения, поскольку мы готовимся к выпуску бета-версии. Рекомендуем ознакомиться с изменениями и поделиться своим мнением в группе Google, посвященной CameraX. Разработчикам, которые используют CameraX в приложениях, опубликованных в Google Play, мы рекомендуем дождаться официального выпуска бета-версии, прежде чем обновлять библиотеку в своих приложениях.

Изменения в API

  • Важно! Инициализация CameraX изменилась. Приложения должны реализовывать CameraXConfig.Provider и использовать Camera2Config по умолчанию, предоставляемый androidx.camera.camera2. Пример использования:

    import androidx.camera.camera2.Camera2Config
    import androidx.camera.core.CameraXConfig
    
    public class MyCameraXApplication : Application(),  CameraXConfig.Provider {
        override fun getCameraXConfig(): CameraXConfig {
                return Camera2Config.defaultConfig(this)
        }
    }
    
  • Класс CameraX удален. Объекты bindToLifecycle(), unbind(), unbindAll(), isBound() и hasCamera(), которые ранее предоставлялись вызовом класса CameraX, теперь доступны через ProcessCameraProvider.

  • Экземпляр ProcessCameraProvider для каждого процесса получается асинхронно с помощью статического метода ProcessCameraProvider.getInstance(), который возвращает объект ListenableFuture, предоставляющий ProcessCameraProvider по завершении. На иллюстрации показано, как это выглядит в onCreate(). Вы можете вызывать getInstance() на более поздних этапах жизненного цикла действия, чтобы отложить задержку инициализации (например, когда пользователь открывает интерфейс камеры).

    import androidx.camera.lifecycle.ProcessCameraProvider
    import com.google.common.util.concurrent.ListenableFuture
    
    class MainActivity : AppCompatActivity() {
       private lateinit var cameraProviderFuture : ListenableFuture<ProcessCameraProvider>
       override fun onCreate(savedInstanceState: Bundle?) {
           cameraProviderFuture = ProcessCameraProvider.getInstance(this);
      }
    
  • Прослушиватель можно добавить в ListenableFuture, возвращенный getInstance(). Это позволяет получить поставщика камеры из Future, не блокируя Future.get().

    cameraProviderFuture.addListener(Runnable {
      val cameraProvider = cameraProviderFuture.get()
      cameraProvider.bindToLifecycle(...)
    }, ContextCompat.getMainExecutor(this))
    
  • Камера теперь выбирается с помощью селектора, а не для каждого случая использования.

    val cameraSelector = CameraSelector.Builder().requireLensFacing(LensFacing.BACK).build()
    
  • CameraProvider.bindToLifecycle получает владельца жизненного цикла, селектор камеры и варианты использования, которые затем привязываются к данному владельцу жизненного цикла и запускаются для выбранной камеры.

    cameraProvider.bindToLifecycle(this as LifecycleOwner,
           cameraSelector, preview, imageAnalysis)
    
  • Классы Config для вариантов использования удалены. Вместо этого создавайте варианты использования напрямую, задавая параметры в каждом конструкторе. Пример:

    preview = Preview.Builder().setTargetAspectRatio(AspectRatio.RATIO_16_9).build()
    
  • Теперь в сценарии использования Preview можно использовать поверхность, созданную приложением и управляемую им. Это соответствует рекомендациям для Android. Настоятельно рекомендуем использовать класс представления PreviewView, который входит в пакет camera-view.

    preview.setPreviewSurfaceProvider(previewView.previewSurfaceProvider)
    
  • Ознакомьтесь с документацией по прикреплению области, управляемой приложением. В таких случаях приложение управляет жизненным циклом поверхности.

  • Важно! Реализация метода ImageAnalysis Analyzer должна вызывать image.close() для полученных изображений, когда они больше не нужны. В противном случае новые изображения могут не приниматься или камера может зависнуть в зависимости от настройки противодавления. Подробную информацию вы найдете в справочной документации.

  • ImageAnalysis ImageReaderMode теперь изменена на стратегию противодавления intdef.

  • ImageProxy.getImage() отмечен как экспериментальный. Приложения должны аннотировать использование, например с помощью @androidx.camera.core.ExperimentalGetImage.

  • Требование к аннотации UIThread для Analyzer удалено.

  • Для удаления анализатора добавлена функция ImageAnalysis.clearAnalyzer().

  • Прослушиватели с несколькими методами переименованы в Callback:

    • Теперь ваш банк – ImageCapture.OnImageCapturedCallback, а не ImageCapture.OnImageCapturedListener
    • Теперь ваш банк – ImageCapture.OnImageSavedCallback, а не ImageCapture.OnImageSavedListener
    • Теперь ваш банк – VideoCapture.OnVideoSavedCallback, а не VideoCapture.OnVideoSavedListener
  • Перечисления заменены на IntDef

  • Добавлены элементы управления масштабом:

    • CameraControl.setLinearZoom()
    • CameraControl.setZoomRatio()
    • CameraInfo.getLinearZoom()
    • CameraInfo.getMaxZoomRatio()
    • CameraInfo.getZoomRatio()
  • CameraInfo.hasFlashUnit() добавлено, чтобы определить, есть ли вспышка/фонарик.

  • Ресурс CameraInfo.isFlashAvailable() уже удален. Фонарик переопределяет функцию вспышки. Подробную информацию вы можете найти в справочной документации.

  • Поля ImageCapture.Metadata заменены методами доступа get/set/is.

  • startFocusMetering и cancelFocusMetering теперь возвращают ListenableFutures, представляющий асинхронную операцию вызова.

  • MeteringPoints теперь используются как дескрипторы для действий по измерению и создаются фабриками. В приложениях следует использовать существующие фабрики, а не создавать собственные.

Устраненные проблемы

  • Исправлена ошибка, возникавшая при съемке после возобновления (когда после предыдущей паузы оставались незавершенные снимки).
  • Известная проблема: CameraControl.enableTorch() работает, но возвращаемое значение ListenableFuture<Void> всегда является ближайшим будущим complete(success), даже если вспышка отсутствует. В будущих версиях это будет исправлено: если вспышки нет, enableTorch(true) сразу же возвращает ошибку (не отправляет запрос в CaptureSession), а TorchState остается в состоянии Off.
  • Известная проблема: startFocusAndMetering и cancelFocusAndMetering запускают и отменяют замер фокуса, но возвращают немедленное будущее completed (success), что не соответствует задокументированному поведению. Поле FocusMeteringResult из ListenableFuture<FocusMeteringResult> CameraControl.startFocusAndMetering() – это поддельный результат, который isFocusSuccessful() и всегда имеет значение False, что отличается от предполагаемого и задокументированного поведения.
  • Известная проблема: фабрика точек измерения для использования с событиями касания PreviewView находится в разработке. Пока что приложения, подключающие пользовательские управляемые поверхности, могут использовать существующие фабрики точек измерения. В противном случае для PreviewView не будет доступна функция фокусировки касанием.

Camera-Camera2 и Camera-Core версии 1.0.0-alpha06

9 октября 2019 г.

Данные "androidx.camera:camera-camera2:1.0.0-alpha06" и "androidx.camera:camera-core:1.0.0-alpha06" опубликованы. Вот коммиты, включенные в camera-camera2:1.0.0-alpha06, а вот коммиты, включенные в camera-core:1.0.0-alpha06.

Новые функции

Изменения в настройке соотношения сторон:

  • Добавлен метод setTargetAspectRatioMode(), который принимает аргумент enum. Задает режим соотношения сторон. Возможные значения: RATIO_4_3 или RATIO_16_9. Это точнее отражает тот факт, что камера поддерживает только определенные соотношения сторон, а не любые.
    • В настоящее время доступны только соотношения сторон 16:9 и 4:3. Соотношение 1:1 доступно только на некоторых устройствах и только при определенных разрешениях. В приложениях, где используется интерфейс или обработка с соотношением сторон 1:1, следует использовать более гибкие варианты 16:9 или 4:3 и обрезать изображение или обрабатывать его часть.
    • При таком соотношении сторон используется максимальная площадь матрицы.
  • В API конфигурации вариантов использования добавлен метод getTargetAspectRatio(), который возвращает соотношение сторон, для которого предназначен вывод варианта использования.
  • Метод setTargetAspectRatio(Rational aspectRatio) для ImageCapture изменен на setTargetAspectRatioCustom(Rational aspectRatio). Если задано, выходные данные ImageCapture обрезаются соответствующим образом.

Executor API

  • Следующие функции принимают параметр executor, который позволяет приложению управлять тем, на каком исполнителе выполняется функция.
    • Preview.setOnPreviewOutputUpdateListener() API. Если исполнитель для этой функции отсутствует, она выполняется в основном потоке.
    • Preview.setOnPreviewOutputUpdateListener
    • FocusMeteringAction.Builder.setAutoFocusCallback
    • ImageAnalysis.setAnalyzer
    • ImageCapture.takePicture
    • CameraView.takePicture
    • CameraView.startRecording
    • VideoCapture.startRecording

Добавлен класс CameraInfo с API для проверки доступности вспышки и поворота датчика.

  • Добавлен метод CameraInfo и getCameraInfo, который позволяет приложениям проверять, доступна ли информация о камере, обращенной к объективу, и есть ли на этой камере вспышка. Пример:

    try {
        CameraInfo cameraInfo = CameraX.getCameraInfo(currentCameraLensFacing);
        LiveData<Boolean> isFlashAvailable = cameraInfo.isFlashAvailable();
        flashToggle.setVisibility(isFlashAvailable.getValue() ? View.VISIBLE : View.INVISIBLE);
    } catch (CameraInfoUnavailableException e) {
        Log.w(TAG, "Cannot get flash available information", e);
        flashToggle.setVisibility(View.VISIBLE);
    }
    
  • Добавлен участник CameraInfo.getSensorRotationDegrees(). Она предоставляет ориентацию датчика камеры относительно естественной ориентации устройства или, для удобства, относительно ориентации, описываемой поворотом поверхности (который описывает ориентацию относительно естественной ориентации).

Изменения в API и исправления ошибок

  • Соотношение сторон. Для каждого варианта использования приложения должны вызывать только setTargetResolution() или setTargetAspectRatio(). Если вызвать оба метода для одного и того же конструктора, произойдет ошибка.
    • В целом рекомендуется использовать setTargetAspectRatio() в зависимости от дизайна интерфейса приложения. Разрешение зависит от сценария использования. Например, предварительный просмотр близок к разрешению экрана, а фотосъемка обеспечивает высокое разрешение. Подробную информацию вы найдете в таблице автоматических разрешений.
    • Используйте setTargetResolution() в более конкретных случаях, например когда требуется минимальное (для экономии вычислительных ресурсов) или максимальное (для обработки деталей) разрешение.
  • Executor API: из API конфигурации вариантов использования удален вызов setCallbackHandler(). Вместо этого приложения могут задавать исполнителя в качестве параметра в других API, которые устанавливают обратный вызов.
  • Обновлены аннотации null для различных функций.
  • Устранена проблема, из-за которой при открытии камеры возникала ошибка java.lang.IllegalStateException at Camera$StateCallback.onError.
  • Исправлена ошибка, из-за которой выбиралось слишком низкое разрешение (менее 640 x 480), когда приложение запрашивало более высокое или стандартное разрешение, что приводило к пикселизации или размытию изображения в режиме предварительного просмотра. Приложения, которым требуется меньшее разрешение, могут запрашивать его явным образом.
  • Исправлена ошибка, из-за которой камера показывала черный экран (не запускалась) после возврата из намерения, которое запускало другое приложение камеры.
  • Исправлена ошибка, из-за которой при повторном запуске или остановке приложений возникала следующая ошибка: java.lang.IllegalArgumentException: CaptureRequest contains unconfigured Input/Output Surface!.
  • Исправлена следующая ошибка, возникающая при отключении ImageAnalysis: java.lang.IllegalStateException: maxImages (4) has already been acquired, call #close before acquiring more..
  • Добавлены дополнительные тесты для процесса отключения камеры.
  • Повышена надежность системы тестирования при последовательном запуске тестов камеры.

Camera-Camera2 и Camera-Core версии 1.0.0-alpha05

5 сентября 2019 г.

Данные "androidx.camera:camera-camera2:1.0.0-alpha05" и "androidx.camera:camera-core:1.0.0-alpha05" опубликованы. Фиксации, включенные в camera-camera2:1.0.0-alpha05, и фиксации, включенные в camera-core:1.0.0-alpha05.

  • Изменение API: переименованы переменные ошибок в примерах использования:

    • Объект ImageCapture.UseCaseError переименован в ImageCapture.ImageCaptureError.
    • VideoCapture.UseCaseError переименован в VideoCapture.VideoCaptureError
  • Добавлен API CameraControl с API фокусировки по нажатию.

    • Добавлен API для получения CameraControl из CameraX для камеры, выбранной по направлению объектива:

      CameraX.getCameraControl(LensFacing lensFacing)

    • Добавлены MeteringPointFactory, MeteringPoint, MeteringMode и FocusMeteringAction для запуска фокусировки по нажатию:

      MeteringPointFactory factory = new SensorOrientedMeteringPointFactory(width, height);
      MeteringPoint point = factory.createPoint(x, y);
      FocusMeteringAction action = FocusMeteringAction.Builder.from(point,
                                       MeteringMode.AF_ONLY)
          .addPoint(point2, MeteringMode.AE_ONLY) // could have many
          .setAutoFocusCallback(new OnAutoFocusListener(){
              public void onFocusCompleted(boolean isSuccess) {
              }
          })
          // auto calling cancelFocusAndMetering in 5 sec.
          .setAutoCancelDuration(5, TimeUnit.Second)
          .build();
      
    • Добавлен API для CameraControl, позволяющий запускать и отменять замер фокуса:

      getCameraControl(lensFacing).startFocusAndMetering(action); getCameraControl(lensFacing).cancelFocusAndMetering();

    • Добавлены API для фабрик точек измерения, которые помогают преобразовывать координаты нажатия в координаты датчика на основе классов представлений:

      MeteringPointFactory factory = new TextureViewMeteringPointFactory(textureView); MeteringPointFactory factory = new DisplayOrientedMeteringPointFactory(context, lensFacing, viewWidth, viewHeight);

  • Принудительно вызывать следующие методы в основном потоке (потоке UI), выдавая ошибку IllegalStateException, если они не вызываются. В будущих версиях будет разрешено использование в других потоках и обеспечена сериализация.

    • CameraX.bindToLifecycle()
    • CameraX.unbind()
    • CameraX.unbindAll()
    • ImageAnalysis.setAnalyzer()
    • ImageAnalysis.getAnalyzer()
    • ImageAnalysis.removeAnalyzer()
    • Preview.removePreviewOutputListener()
    • Preview.getOnPreviewOutputUpdateListener()
    • Preview.setOnPreviewOutputUpdateListener()
  • Различные настройки конфигурации теперь принимают нулевые параметры, а соответствующие геттеры могут возвращать нулевые значения.

  • Исправлена ошибка, возникавшая при тестировании на эмуляторах, которые не поддерживают настройки автофокуса, автоэкспозиции и автоматического баланса белого.

  • Исправлена ошибка, из-за которой происходил сбой при повороте экрана во время анализа изображения.

  • Исправлена ошибка, из-за которой при запуске, повороте или переключении между фронтальной и основной камерами в окне предварительного просмотра появлялся черный экран (данные с камеры не поступали).

  • Удалено тестирование для нескольких параллельных сценариев использования анализа изображений. Чтобы обеспечить совместимость, приложения должны использовать только один вариант анализа изображений.

  • Добавлены начальные тесты Robolectric для имитации камеры в наборе тестов камеры (в разработке).

  • Удален тест Camera2Inititalizer, так как его охват был неясным или вводящим в заблуждение.

Camera-Camera2 и Camera-Core версии 1.0.0-alpha04

7 августа 2019 г.

Данные "androidx.camera:camera-camera2:1.0.0-alpha04" и "androidx.camera:camera-core:1.0.0-alpha04" опубликованы. Коммиты, вошедшие в версию 1.0.0-alpha04

Новые функции

Изменения в выборе соотношения сторон и разрешения

Цель CameraX – успешно инициализировать сеанс камеры. Это означает, что CameraX может изменить разрешение или соотношение сторон в зависимости от возможностей устройства, чтобы начать сеанс съемки. В результате точные запросы могут не выполняться. Это может быть связано со следующими причинами:

  • Устройства, не поддерживающие запрошенное разрешение
  • Проблемы с совместимостью, например на устаревших устройствах, где для корректной работы необходимо использовать определенные разрешения.
  • На некоторых устройствах определенные форматы доступны только при определенном соотношении сторон.
  • Предпочтение "ближайшего mod16" для кодирования JPEG или видео. Посмотрите CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP.

Хотя CameraX создает сеанс и управляет им, вы должны всегда проверять размеры возвращаемых изображений в выходных данных варианта использования в своем коде и соответствующим образом корректировать их.

Чтобы сделать API более понятным, мы внесли некоторые изменения в настройки разрешения и соотношения сторон:

  • Если соотношение сторон не задано, для предварительного просмотра по умолчанию используется соотношение 4:3.
  • Когда CameraX внутренне рассматривает изменения запрошенных разрешений и соотношений сторон на основе возможностей устройства, он сначала пытается сохранить то же соотношение сторон (определяемое любым из вызовов setTargetAspectRatio или setTargetResolution).
  • Версия разрешения "Ближайшее mod16" считается имеющей такое же соотношение сторон.

Неблокирующий режим ImageAnalysis

  • Теперь ImageReaderMode.ACQUIRE_LATEST_IMAGE не блокирует выполнение кода. Он получает последнее изображение в очереди, но постоянно отбрасывает неиспользуемые изображения, чтобы избежать блокировки конвейера камеры.
  • Анализатор может удерживать одно изображение неограниченное время, не останавливая конвейер.
  • Если приложение предоставляет исполнителя, который затем блокирует, вариант использования ImageAnalysis блокирует.
  • Исполнитель по умолчанию, заданный внутри, ведет себя как неблокирующий исполнитель.

Исправление ошибок

  • Исправлены проблемы с тайм-аутом при ожидании сходимости 3A при съемке изображений на устройствах без автофокуса, автоэкспозиции и автоматического баланса белого.
  • Исправлена ошибка, возникавшая при быстрой съемке с помощью ImageCapture. Исправляет ошибку: java.lang.IllegalStateException: maxImages (2) has already been acquired
  • Исправлена ошибка, из-за которой в одном из сценариев не вызывался метод setLensFacing, что приводило к ошибке java.lang.IllegalArgumentException: Unable to get camera ID for use case.
  • Исправлена ошибка, из-за которой для устаревших устройств требовалось определенное соотношение сторон в качестве максимального разрешения JPEG.
  • Исправлена ошибка, возникавшая при сворачивании приложения во время открытия камеры.
  • Исправлена ошибка checkAndUpdateEglState: invalid current EGLDisplay в API < 25.
  • Исправлена ошибка, из-за которой отменялась привязка предварительного просмотра после включения и запуска расширений.
  • Артефакты сборки для camera-view и camera-extensions теперь публикуются как альфа-версии.

Camera-Camera2 и Camera-Core версии 1.0.0-alpha03

2 июля 2019 г.

Данные "androidx.camera:camera-core:1.0.0-alpha03" и "androidx.camera:camera-camera2:1.0.0-alpha03" опубликованы. Версия 1.0.0-alpha03 содержит эти коммиты.

Изменения в API

  • Добавлено пояснение javadoc для target в вызовах конфигурации setTarget.

Camera-Core

  • Исправлен сбой ненастроенной поверхности ввода/вывода при быстром открытии/закрытии или привязке/отвязке.
  • Переход на новые реализации Futures
  • Исправления для более надежного тестирования
  • В тесте интеграции ядра теперь показывается время съемки фотографий
  • Разработан внутренний класс совместимости для исполнителей.
  • Приложение для тестирования времени ожидает завершения предыдущего захвата изображений, а также улучшена стабильность.

Расширения

  • Добавлены проверки версий.
  • Дополнительное тестовое покрытие – обратные вызовы событий расширения
  • Улучшено внутреннее сопоставление изображений и метаданных.
  • Исправлены ошибки при переключении режимов в тестовом приложении.

Camera-Camera2 и Camera-Core версии 1.0.0-alpha02

5 июня 2019 г.

Данные "androidx.camera:camera-core:1.0.0-alpha02" и "androidx.camera:camera-camera2:1.0.0-alpha02" опубликованы. Версия 1.0.0-alpha02 содержит эти коммиты.

Исправление ошибок

  • Исправлена ошибка деления на ноль при использовании эмулятора.
  • Исправлена ошибка NullPointerException/Surface Abandoned, возникавшая на некоторых устройствах при быстрой съемке фотографий с быстрой отменой и повторной привязкой вариантов использования.
  • Исправлена внутренняя ошибка, из-за которой обновления запросов на съемку не применялись ко всем платформам.
  • Повышена стабильность при перезапуске сценариев использования в новых экземплярах приложений.
  • Изменения во внутренней архитектуре для подготовки к поддержке исполнителей в API.
  • Дополнительные пояснения Javadoc по классу CameraX и управлению жизненным циклом.
  • Добавлено инструментальное тестирование для приложения Antelope performance test app.
  • Удалите из файла конфигурации Proguard строку "-keepattributes Signature".

Camera-Camera2 и Camera-Core 1.0.0-alpha01

7 мая 2019 г.

Выход androidx.camera:camera-core:1.0.0-alpha01 и androidx.camera:camera-camera2:1.0.0-alpha01. Версия 1.0.0-alpha01 содержит эти коммиты.

Camera-Lifecycle версии 1.0.0-beta11

14 октября 2020 г.

Выпущены данные "androidx.camera:camera-lifecycle:1.0.0-beta11". Версия 1.0.0-beta11 содержит эти коммиты.

Исправление ошибок

  • <UseCase>.getTargetRotation() вернет Surface.ROTATION_0, если будет вызван до подключения к экземпляру Camera, за исключением случаев, когда targetRotation задан в Builder или UseCase. (I80fcd)

Camera-Lifecycle версии 1.0.0-beta10

23 сентября 2020 г.

Выпущены данные "androidx.camera:camera-lifecycle:1.0.0-beta10". Версия 1.0.0-beta10 содержит эти коммиты.

Исправление ошибок

Camera-Lifecycle версии 1.0.0-beta09

16 сентября 2020 г.

Выпущены данные "androidx.camera:camera-lifecycle:1.0.0-beta09". Версия 1.0.0-beta09 содержит эти коммиты.

Camera-Lifecycle версии 1.0.0-beta08

19 августа 2020 г.

Выпущены данные "androidx.camera:camera-lifecycle:1.0.0-beta08". Версия 1.0.0-beta08 содержит эти коммиты.

Исправление ошибок

  • Инициализация больше не должна приводить к сбою при использовании контекста, который не возвращает объект Application из Context.getApplicationContext(). (I3d3c9, b/160817073)

Camera-Lifecycle версии 1.0.0-beta07

22 июля 2020 г.

Выпущены данные "androidx.camera:camera-lifecycle:1.0.0-beta07". Версия 1.0.0-beta07 содержит эти коммиты.

Camera-Lifecycle версии 1.0.0-beta06

24 июня 2020 г.

Выпущены данные "androidx.camera:camera-lifecycle:1.0.0-beta06". Версия 1.0.0-beta06 содержит эти коммиты.

Изменения в API

  • Теперь CameraX можно настроить с помощью ProcessCameraProvider#configureInstance() перед вызовом ProcessCameraProvider#getInstance(). Это позволяет настраивать CameraXConfig без необходимости реализации CameraXConfig.Provider в классе Application приложения. (Ia1a8d)

Camera-Lifecycle версии 1.0.0-beta05

10 июня 2020 г.

Выпущены данные "androidx.camera:camera-lifecycle:1.0.0-beta05". Версия 1.0.0-beta05 содержит эти коммиты.

Исправление ошибок

  • Исправлен сбой при запуске приложения, когда CameraX инициализируется в режиме "Не беспокоить". Если InitializationException содержит CameraUnavailableException, то вместо сбоя приложения будет задано значение ListenableFuture результата инициализации. (I9909a, b/149413835)

Camera-Lifecycle версии 1.0.0-beta04

27 мая 2020 г.

Выпущены данные "androidx.camera:camera-lifecycle:1.0.0-beta04". Версия 1.0.0-beta04 содержит эти коммиты.

Camera-Lifecycle версии 1.0.0-beta03

15 апреля 2020 г.

Выпущены данные "androidx.camera:camera-lifecycle:1.0.0-beta03". Версия 1.0.0-beta03 содержит эти коммиты.

Исправление ошибок

  • Исправлена регрессия из версии beta03, из-за которой вызов bindToLifecycle() с нулевым значением UseCase вызывал исключение. Это не позволяло получить Camera без привязки UseCase.
  • Исправления для поддержки выпуска camera-core.

Camera-Lifecycle версии 1.0.0-beta01

26 февраля 2020 г.

Выпущены данные "androidx.camera:camera-lifecycle:1.0.0-beta01". Версия 1.0.0-beta01 содержит эти коммиты.

Исправление ошибок

  • В документацию добавлено примечание о том, что при получении ProcessCameraProvider во время инициализации используется конфигурация по умолчанию и что расширение Application необязательно. (I5e395)

Camera-Lifecycle версии 1.0.0-beta02

1 апреля 2020 г.

Выпущены данные "androidx.camera:camera-lifecycle:1.0.0-beta02". Версия 1.0.0-beta02 содержит эти коммиты.

Исправление ошибок

  • Обновлено для поддержки исправлений ошибок в объектах camera-camera2:1.0.0-beta02 и camera-core:1.0.0-beta02.

Camera-Lifecycle, версия 1.0.0-alpha10

10 февраля 2020 г.

Выпущены данные "androidx.camera:camera-lifecycle:1.0.0-alpha10". Версия 1.0.0-alpha10 содержит эти коммиты.

Изменения в API

  • Добавлена аннотация @MainThread к методам BindToLifecycle, unbind и unbindAll. (I990d2)

Camera-Lifecycle версии 1.0.0-alpha03

22 января 2020 г.

Выпущены данные "androidx.camera:camera-lifecycle:1.0.0-alpha03". Версия 1.0.0-alpha03 содержит эти коммиты.

Обновления

  • Исправлены ошибки и внесены изменения, связанные с Camera Core и Camera2.

Camera-Lifecycle версии 1.0.0-alpha02

18 декабря 2019 г.

Выпущены данные "androidx.camera:camera-lifecycle:1.0.0-alpha02". Версия 1.0.0-alpha02 содержит эти коммиты.

Изменения в зависимостях

  • Обновлено для использования androidx.camera:camera-core:1.0.0-alpha08.

Camera-Lifecycle версии 1.0.0-alpha01

4 декабря 2019 г.

Выпущены данные "androidx.camera:camera-lifecycle:1.0.0-alpha01". Версия 1.0.0-alpha01 библиотеки camera-lifecycle содержит следующие коммиты

Примечания к API

  • Добавлен артефакт camera-lifecycle, предоставляющий интерфейс LifeCycleCameraProvider и реализацию ProcessCameraProvider, которая обеспечивает многие функции предыдущего класса CameraX в ядре и получается с помощью метода getInstance().
  • Чтобы использовать CameraX, в приложениях должна быть библиотека camera-lifecycle.
  • Инструкции по инициализации CameraX с помощью ProcessCameraProvider приведены в разделе camera-core.

Camera-Extensions и Camera-View версии 1.0.0

Версия 1.0.0-alpha32

15 декабря 2021 г.

Данные "androidx.camera:camera-extensions:1.0.0-alpha32" и "androidx.camera:camera-view:1.0.0-alpha32" опубликованы. Версия 1.0.0-alpha32 содержит эти коммиты.

Изменения в API

  • Удалены ненужные аннотации @RequiresApi(21) из внутренних классов и интерфейсов. (I8e286, b/204917951)
  • Обновите файлы API для артефакта camera-extensions. (If683a, b/161377155)

Исправление ошибок

  • Запретить приложению включать режимы расширения при привязке VideoCapture. Расширения CameraX поддерживают только ImageCapture и Preview. VideoCapture пока не поддерживается. Если приложение связывает VideoCapture и включает любой режим расширения, будет выдано исключение IllegalArgumentException. (I0d87b)
  • CameraSelector#filter больше не выдает IllegalArgumentException, если набор результатов пуст. (I27804)
  • API ExtensionsManager#getInstance переименован в getInstanceAsync, поскольку он возвращает ListenableFuture. Суффикс Async в названии функции указывает на то, что она асинхронная. (I279d2)
  • Удалите параметр разрешения из API ExtensionsManager#getEstimatedCaptureLatencyRange, поскольку пользователи не могут знать, какие размеры поддерживаются для варианта использования ImageCapture, и не могут определить, относится ли возвращенная информация о задержке к максимальному размеру выходных данных захвата или к параметру разрешения входных данных. (I74bb2)
  • Переместите параметр CameraProvider функций ExtensionsManager в API getInstance(). Чтобы пользователям не приходилось каждый раз вводить параметр CameraProvider при вызове функций ExtensionsManager. (Ic7e48)

Версия 1.0.0-alpha31

17 ноября 2021 г.

Данные "androidx.camera:camera-extensions:1.0.0-alpha31" и "androidx.camera:camera-view:1.0.0-alpha31" опубликованы. Версия 1.0.0-alpha31 содержит эти коммиты.

Изменения в API

  • В общедоступный API добавлен метод CameraSelector#filter, позволяющий фильтровать список CameraInfo на основе CameraSelector. (I105d0)

Исправление ошибок

  • Устранен сбой, который возникал на некоторых устройствах при быстром переключении режима расширений. (Iebbef)

Версия 1.0.0-alpha30

13 октября 2021 г.

Данные "androidx.camera:camera-extensions:1.0.0-alpha30" и "androidx.camera:camera-view:1.0.0-alpha30" опубликованы. Версия 1.0.0-alpha30 содержит эти коммиты.

Изменения в API

  • Добавлена аннотация @RequiresApi(21) для всех классов CameraX, а minSdkVersion удалена из AndroidManifest.xml. Это позволит легко интегрировать camera-core в приложения, у которых для атрибута minSdkVersion задано значение ниже 21, но которые хотят условно использовать пути выполнения, зависящие от API 21 и выше. Если у вас приложение с minSdkVersion 21 или выше, никаких действий не требуется. (Ie7f2e, b/200599470)

Исправление ошибок

  • Исправлена ошибка AbstractMethodError, которая возникает, когда включен ProGuard. (Iae468, b/201177844)

Версия 1.0.0-alpha29

29 сентября 2021 г.

Данные "androidx.camera:camera-extensions:1.0.0-alpha29" и "androidx.camera:camera-view:1.0.0-alpha29" опубликованы. Версия 1.0.0-alpha29 содержит эти коммиты.

Изменения в API

  • Аннотация ExperimentalUseCaseGroup удалена, поскольку API больше не являются экспериментальными. (I01ef5)
  • удалить таймер "RotationProvider#removeAllListeners()". Вместо него используйте RotationProvider#removeListener(...). (Id9d4a)
  • Обновлен класс RotationReceiver: set/clear Listener заменен на add/remove/removeAll, удален вариант setListener, который по умолчанию использует основной поток, и добавлена аннотация методов. (Ib1669)

Исправление ошибок

  • Режим ExtensionMode#BEAUTY переименован в FACE_RETOUCH, чтобы точнее отражать его назначение. (I61f54, b/198515274)
  • Исправлена ошибка, из-за которой камера неожиданно закрывалась, когда в одном действии использовалось несколько CameraController и PreviewView. (Ibfd18, b/197539358)

Версия 1.0.0-alpha28

18 августа 2021 г.

Данные "androidx.camera:camera-extensions:1.0.0-alpha28" и "androidx.camera:camera-view:1.0.0-alpha28" опубликованы. Версия 1.0.0-alpha28 содержит эти коммиты.

Изменения в API

  • Аннотация ExperimentalUseCaseGroupLifecycle удалена, поскольку API больше не являются экспериментальными. (I17b85)
  • Проведен рефакторинг RotationListener и его переименование в RotationProvider. Она по-прежнему предоставляет ту же функцию, но с немного другим API. (Idffc5)
  • Переименуйте TAP_TO_FOCUS_UNSUCCESSFUL в TAP_TO_FOCUS_NOT_FOCUSED, а TAP_TO_FOCUS_SUCCESSFUL – в TAP_TO_FOCUS_FOCUSED. Класс OutputSize стал финальным (I099fa).

Исправление ошибок

  • Удалены устаревшие классы <EffectName><UseCase>Extender, ExtensionsErrorListener и связанные API ExtensionsManager. (I3b8c3)

Версия 1.0.0-alpha27

21 июля 2021 г.

Данные "androidx.camera:camera-extensions:1.0.0-alpha27" и "androidx.camera:camera-view:1.0.0-alpha27" опубликованы. Версия 1.0.0-alpha27 содержит эти коммиты.

Изменения в API

  • Viewport API больше не является экспериментальным. Удалите аннотацию эксперимента из API. (I717ea)
  • CoordinateTransform#getTransform переименован в CoordinateTransform#transform, обновлена документация JavaDoc (I864ae).

Исправление ошибок

  • Исправлена проблема с растягиванием в режиме PreviewView PERFORMANCE при использовании вместе с Compose UI. (Ie1137, b/183864890)

Версия 1.0.0-alpha26

30 июня 2021 г.

Данные "androidx.camera:camera-extensions:1.0.0-alpha26" и "androidx.camera:camera-view:1.0.0-alpha26" опубликованы. Версия 1.0.0-alpha26 содержит эти коммиты.

Изменения в API

  • Добавьте новый метод CameraController#getTapToFocusState(), который показывает последний результат фокусировки по нажатию. (Iaccb0)
  • Добавление дополнительных основных функций камеры в CameraController: геттеры/сеттеры для целевого соотношения сторон, целевого разрешения, режима съемки, CameraControl и пользовательских исполнителей. (Iea8f2)
  • добавьте класс RotationReceiver, который получает изменения поворота Surface. Это можно использовать, чтобы задать целевой поворот, когда устройство находится в фиксированном вертикальном или горизонтальном режиме. (Ib278f)
  • В класс ExtensionsManager добавлены новые общедоступные API getEstimatedCaptureLatencyRange. (I6a8ec)
  • Устаревший ExtensionsErrorListener. В настоящее время этот интерфейс используется только для отслеживания того, отсутствует ли Preview или ImageCapture при включении режимов расширения. CameraX автоматически добавит дополнительный Preview или ImageCapture, чтобы функции расширения работали правильно. После этого в интерфейсе не будут появляться сообщения об ошибках. (I47d9e)
  • Добавлены новые общедоступные API ExtensionsManager getInstance, isExtensionAvailable и getExtensionEnabledCameraSelector, а также прекращена поддержка старых классов <EffectName><UseCase>Extender и связанных с ними API. (I329e6)

Версия 1.0.0-alpha25

2 июня 2021 г.

Данные "androidx.camera:camera-extensions:1.0.0-alpha25" и "androidx.camera:camera-view:1.0.0-alpha25" опубликованы. Версия 1.0.0-alpha25 содержит эти коммиты.

Изменения в API

  • ExperimentalCameraFilter API больше не являются экспериментальными и стали официальными API. Их можно использовать без аннотации OptIn. (I4bc94)
  • Добавьте утилиту, которая преобразует координаты между вариантами использования. Пример использования: преобразование координат, обнаруженных в ImageAnalysis, и выделение обнаруженного объекта в предварительном просмотре. (I63ab1, b/137515129)
  • Контакт (CameraView) удален. Вместо CameraView теперь используется CameraController. Инструкции по переносу приведены в руководстве. (Id5005)

Исправление ошибок

  • Значение в ячейке ExperimentalUseCaseGroupLifecycle заменено на "ExperimentalUseCaseGroup". (I3b2ef, b/159033688)

Версия 1.0.0-alpha24

21 апреля 2021 г.

Данные "androidx.camera:camera-extensions:1.0.0-alpha24" и "androidx.camera:camera-view:1.0.0-alpha24" опубликованы. Версия 1.0.0-alpha24 содержит эти коммиты.

Исправление ошибок

  • Аннотация @Experimental заменена на @RequiresOptIn для экспериментальных API. Для вызова экспериментальных API используйте androidx.annotation.OptIn вместо устаревшего androidx.annotation.experimental.UseExperimental. Iff226
  • Исправлена проблема с растянутым изображением в PreviewView на Samsung J5 Prime (Ib10b6).

Camera Extensions & View версии 1.0.0-alpha23

24 марта 2021 г.

Данные "androidx.camera:camera-extensions:1.0.0-alpha23" и "androidx.camera:camera-view:1.0.0-alpha23" опубликованы. Версия 1.0.0-alpha23 содержит эти коммиты.

Изменения в API

  • Поддержка CameraView прекращается. Вместо него используйте следующее: LifecycleCameraController. Ознакомьтесь с руководством по переносу (Idac2c).
  • Добавлена аннотация FloatRange в setLinearZoom() (I69971).

Исправление ошибок

  • Зависимости camera-view закреплены за артефактами версии 1.0.0. При использовании camera-view разрешение зависимостей Gradle больше не будет автоматически обновлять camera-core, camera-camera2 и camera-lifecycle до последних артефактов версии 1.1.0. Однако camera-view по-прежнему совместим с этими артефактами, если они явно настроены на использование версии 1.1.0. (Ic8fa1, b/181599852)
  • Исправлена ошибка, из-за которой на устройствах Samsung A3 изображение в PreviewView растягивалось. (Iacb30, b/180121821)
  • Исправлена ошибка, из-за которой селектор камеры не мог быть установлен до инициализации камеры. (Ic8bd0)

Camera Extensions & View версии 1.0.0-alpha22

24 февраля 2021 г.

Данные "androidx.camera:camera-extensions:1.0.0-alpha22" и "androidx.camera:camera-view:1.0.0-alpha22" опубликованы. Версия 1.0.0-alpha22 содержит эти коммиты.

Изменения в API

  • добавьте метод получения CameraInfo в CameraController. (Ib8138, b/178251727)

Исправление ошибок

  • Исправлена ошибка, из-за которой ExtensionsErrorListener сообщал об ошибках, когда привязаны только Preview или ImageCapture. (I5ae39)

Camera Extensions & View версии 1.0.0-alpha21

27 января 2021 г.

Данные "androidx.camera:camera-extensions:1.0.0-alpha21" и "androidx.camera:camera-view:1.0.0-alpha21" опубликованы. Версия 1.0.0-alpha21 содержит эти коммиты.

Добавлена поддержка других артефактов библиотеки камеры.

Camera Extensions & View версии 1.0.0-alpha20

16 декабря 2020 г.

Данные "androidx.camera:camera-extensions:1.0.0-alpha20" и "androidx.camera:camera-view:1.0.0-alpha20" опубликованы. Версия 1.0.0-alpha20 содержит эти коммиты.

Добавлена поддержка других артефактов библиотеки камеры.

Camera-Extensions и Camera-View версии 1.0.0-alpha19

11 ноября 2020 г.

Данные "androidx.camera:camera-extensions:1.0.0-alpha19" и "androidx.camera:camera-view:1.0.0-alpha19" опубликованы. Версия 1.0.0-alpha19 содержит эти коммиты.

Исправление ошибок

  • В поле зрения камеры появилась аннотация "@ExperimentalVideo". Эта аннотация отмечает API, которые предоставляют экспериментальные функции видео, которые могут быть изменены по мере полной разработки функций. Любой метод, использующий эти API, должен использовать аннотацию @UseExperimental с ExperimentalVideo в качестве markerClass. (I6d729)

Camera-Extensions версии 1.0.0-alpha18

14 октября 2020 г.

Выпущены данные "androidx.camera:camera-extensions:1.0.0-alpha18". Версия 1.0.0-alpha18 содержит эти коммиты.

Исправление ошибок

  • Уменьшена задержка при инициализации CameraX и bindToLifecycle (I61dc5).
  • <UseCase>.getTargetRotation() вернет Surface.ROTATION_0, если будет вызван до подключения к экземпляру Camera, за исключением случаев, когда targetRotation задан в Builder или UseCase. (I80fcd)

Camera-View версии 1.0.0-alpha18

14 октября 2020 г.

Выпущены данные "androidx.camera:camera-view:1.0.0-alpha18". Версия 1.0.0-alpha18 содержит эти коммиты.

Добавлена поддержка других артефактов библиотеки камеры.

Camera-Extensions версии 1.0.0-alpha17

23 сентября 2020 г.

Выпущены данные "androidx.camera:camera-extensions:1.0.0-alpha17". Версия 1.0.0-alpha17 содержит эти коммиты.

Исправление ошибок

Camera-View версии 1.0.0-alpha17

23 сентября 2020 г.

Выпущены данные "androidx.camera:camera-view:1.0.0-alpha17". Версия 1.0.0-alpha17 содержит эти коммиты.

Исправление ошибок

Camera-Extensions версии 1.0.0-alpha16

16 сентября 2020 г.

Выпущены данные "androidx.camera:camera-extensions:1.0.0-alpha16". Версия 1.0.0-alpha16 содержит эти коммиты.

Исправление ошибок

  • Добавлен метод в ExtensionsManager для получения объекта Extensions, который используется для включения и запроса расширений в экземплярах Camera (I4fb7e).

Camera-View версии 1.0.0-alpha16

16 сентября 2020 г.

Выпущены данные "androidx.camera:camera-view:1.0.0-alpha16". Версия 1.0.0-alpha16 содержит эти коммиты.

Изменения в API

  • Удалены PreviewView#setDeviceRotationForRemoteDisplayMode() и PreviewView#getDeviceRotationForRemoteDisplayMode(). Эти два метода предназначены для настройки поворота предварительного просмотра, когда желаемый поворот не является поворотом дисплея, например удаленным дисплеем. Чтобы настроить поворот предварительного просмотра без показа, задайте нужный поворот с помощью Preview#setTargetRotation() и нового PreviewView#getViewPort(targetRotation). (Ib62cc)
  • Название "createSurfaceProvider()" изменено на "getSurfaceProvider()". Метод всегда будет возвращать один и тот же экземпляр Preview.SurfaceProvider. (Iff83c)

Исправление ошибок

  • Принудительное использование TextureView в PreviewView, если включен эффект расширения и реализация библиотеки поставщика требует специальной обработки выходной поверхности. (I0c3cc)
  • Разрешить произвольный поворот цели для предварительного просмотра. Информация о преобразовании рассчитывается и возвращается пользователю в реальном времени с помощью нового обратного вызова TranformationInfoListener. (I21470)

Известные проблемы

  • В PreviewView метод OnClickListener#onClick() не вызывается, когда конечный пользователь нажимает на PreviewView. Событие касания ошибочно обрабатывается PreviewView#onTouchEvent(). Проблема будет устранена в следующем выпуске.
  • Объект MeteringPoint, полученный из PreviewView#getMeteringPointFactory(), может быть неверным, если ViewPort используется с PreviewView.

Camera-Extensions версии 1.0.0-alpha15

19 августа 2020 г.

Выпущены данные "androidx.camera:camera-extensions:1.0.0-alpha15". Версия 1.0.0-alpha15 содержит эти коммиты.

Исправление ошибок

  • Метод ExtensionsManager.init() теперь принимает в качестве параметра контекст, а не 0 аргументов. (Ife754)
  • Инициализация больше не должна приводить к сбою при использовании контекста, который не возвращает объект приложения из Context.getApplicationContext(). (I3d3c9, b/160817073)

    Camera-View версии 1.0.0-alpha15

    19 августа 2020 г.

Выпущены данные "androidx.camera:camera-view:1.0.0-alpha15". Версия 1.0.0-alpha15 содержит эти коммиты.

Исправление ошибок

  • DisplayOrientedMeteringPointFactory принимает экземпляр CameraInfo вместо CameraSelector, поэтому существует прямое сопоставление с камерой, для которой фабрика будет генерировать точки. Все классы, использующие DisplayOrientedMeteringPointFactory, также принимают экземпляр CameraInfo вместо CameraSelector. (I400c1)
  • Контакт (TextureViewMeteringPointFactory) удален. PreviewView предоставляет общедоступный API (createMeteringPointFactory()) для создания фабрики точек замера независимо от того, используется ли TextureView или SurfaceView. (Ide693)
  • Переименуйте режимы реализации PreviewView SURFACE_VIEW/TEXTURE_VIEW в PERFORMANCE/COMPATIBLE. PERFORMANCE – это старый режим SURFACE_VIEW, а COMPATIBLE – старый режим TEXTURE_VIEW. (I0edc2)
  • Для фотосъемки перезапишите флаг горизонтального отражения в метаданных на основе направления камеры. (I28499)

Camera-Extensions версии 1.0.0-alpha14

22 июля 2020 г.

Выпущены данные "androidx.camera:camera-extensions:1.0.0-alpha14". Версия 1.0.0-alpha14 содержит эти коммиты.

Camera-View версии 1.0.0-alpha14

22 июля 2020 г.

Выпущены данные "androidx.camera:camera-view:1.0.0-alpha14". Версия 1.0.0-alpha14 содержит эти коммиты.

Camera-Extensions версии 1.0.0-alpha13

24 июня 2020 г.

Выпущены данные "androidx.camera:camera-extensions:1.0.0-alpha13". Версия 1.0.0-alpha13 содержит эти коммиты.

Исправление ошибок

  • Добавлены экспериментальные интерфейсы для фильтрации камер по идентификатору и характеристикам. (I28f61)

Camera-View версии 1.0.0-alpha13

24 июня 2020 г.

Выпущены данные "androidx.camera:camera-view:1.0.0-alpha13". Версия 1.0.0-alpha13 содержит эти коммиты.

Исправление ошибок

  • CameraView больше не аварийно завершает работу с ошибкой IllegalArgumentException при привязке к LifecycleOwner, чей Lifecycle переходит в состояние DESTROYED вскоре после привязки. Привязка жизненных циклов в состоянии DESTROYED не приведет к попытке открыть камеру. (I7c2b8)
  • PreviewView StreamState теперь доступен через CameraView.getPreviewStreamState() (I21a2b).

Camera-Extensions версии 1.0.0-alpha12

10 июня 2020 г.

Выпущены данные "androidx.camera:camera-extensions:1.0.0-alpha12". Версия 1.0.0-alpha12 содержит эти коммиты.

Исправление ошибок

  • Исправлен сбой при запуске приложения, когда CameraX инициализируется в режиме "Не беспокоить". Если InitializationException содержит CameraUnavailableException, то вместо сбоя приложения будет задано значение ListenableFuture результата инициализации. (I9909a, b/149413835)

Camera-View версии 1.0.0-alpha12

10 июня 2020 г.

Выпущены данные "androidx.camera:camera-view:1.0.0-alpha12". Версия 1.0.0-alpha12 содержит эти коммиты.

Исправление ошибок

  • Добавлен API PreviewView#getBitmap(), который возвращает битовую карту контента, показанного в области предварительного просмотра. (I9b500, b/157659818)

Camera-Extensions версии 1.0.0-alpha11

27 мая 2020 г.

Выпущены данные "androidx.camera:camera-extensions:1.0.0-alpha11". Версия 1.0.0-alpha11 содержит эти коммиты.

Camera-View версии 1.0.0-alpha12

10 июня 2020 г.

Выпущены данные "androidx.camera:camera-view:1.0.0-alpha12". Версия 1.0.0-alpha12 содержит эти коммиты.

Новые функции

Изменения в API

Исправление ошибок

  • Добавлен API PreviewView#getBitmap(), который возвращает битовую карту контента, показанного в области предварительного просмотра. (I9b500, b/157659818)

Camera-View, версия 1.0.0-alpha11

27 мая 2020 г.

Выпущены данные "androidx.camera:camera-view:1.0.0-alpha11". Версия 1.0.0-alpha11 содержит эти коммиты.

Изменения в API

  • Добавлен API PreviewView#getPreviewStreamState, который позволяет приложениям отслеживать, выполняется ли потоковая передача предварительного просмотра. Если PreviewView находится в режиме TEXTURE_VIEW, состояние STREAMING также гарантирует, что изображение предварительного просмотра будет видно. (Ic0906, b/154652477)
  • Добавлен API PreviewView#setDeviceRotationForRemoteDisplayMode(), который позволяет поворачивать устройство для расчета преобразований, если приложение запущено в режиме удаленного экрана. (I59b95, b/153514525)

Исправление ошибок

  • Исправлена проблема с искажением изображения в режиме предварительного просмотра на камерах FULL/LIMITED/LEVEL_3 с Android 7.0 и более ранними версиями. Принудительное использование режима ImplementationMode#TEXTURE_VIEW, если версия Android – 7.0 или ниже. (I83e30, b/155085307)
  • Из функции PreviewView#createSurfaceProvider() удален параметр CameraInfo. Теперь функция PreviewView получает его из SurfaceRequest. (If18f0, b/154652477)
  • Исправлено соотношение сторон по умолчанию для VideoCapture в CameraView. Теперь оно составляет 16:9. (Ie6a7b, b/153237864)
  • Исправлена ошибка, из-за которой в ViewPager2 появлялся черный экран при удалении фрагмента PreviewView и его последующем возвращении Preview. Также исправлена ошибка, из-за которой removeView(previewview), а затем addView(previewView). (Iab555, b/149877652, b/147354615)
  • Обновите API CameraView#takePicture(), чтобы разрешить сохранение изображений в Uri и OutputStream. Обновите тестовое приложение, чтобы использовать Uri в качестве канонического примера. (Ia2459, b/153607583)
  • Вы можете задать тип масштабирования PreviewView в макете XML, установив атрибут ScaleType. (I08565, b/153015659)
  • Ресурс CameraView.ScaleType уже удален. Вместо этого используйте PreviewView.ScaleType, чтобы задать или получить тип масштабирования с помощью CameraView. (Ia8974, b/153014831)
  • Если у элемента PreviewView нет цвета фона по умолчанию, задайте его. Это нужно, чтобы контент за ним не был виден до начала предварительного просмотра трансляции. (I09fad)

Camera-Extensions версии 1.0.0-alpha10

15 апреля 2020 г.

Выпущены данные "androidx.camera:camera-extensions:1.0.0-alpha10". Версия 1.0.0-alpha10 содержит эти коммиты.

Исправление ошибок

  • Исправления для поддержки выпуска Camera-Core.

Camera-View, версия 1.0.0-alpha10

15 апреля 2020 г.

Выпущены данные "androidx.camera:camera-view:1.0.0-alpha010". Версия 1.0.0-alpha010 содержит эти коммиты.

Исправление ошибок

  • Исправлена известная проблема, из-за которой реализация surfaceView в PreviewView не работала должным образом на некоторых устройствах и приводила к сбою приложения после возобновления предварительного просмотра. (I5ed6b)

Camera-Extensions версии 1.0.0-alpha09

1 апреля 2020 г.

Выпущены данные "androidx.camera:camera-extensions:1.0.0-alpha09". Версия 1.0.0-alpha09 содержит эти коммиты.

Исправление ошибок

  • Обновлено для поддержки исправлений ошибок в артефактах camera-camera2:1.0.0-beta02, camera-core:1.0.0-beta02 и camera-lifecycle:1.0.0-beta02.

Camera-View версии 1.0.0-alpha09

1 апреля 2020 г. Выпущен androidx.camera:camera-view:1.0.0-alpha09. Версия 1.0.0-alpha09 содержит эти коммиты.

Известные проблемы

  • Использование ImplementationMode.SURFACE_VIEW с PreviewView может работать некорректно на некоторых устройствах. Это связано с тем, что SurfaceView, используемый для предварительного просмотра, аннулирует свою поверхность, когда жизненный цикл окна, в котором он находится, останавливается. При перезапуске камера снова открывается и может попытаться возобновить предварительный просмотр до того, как поверхность SurfaceView снова станет действительной. Пока используйте ImplementationMode.TEXTURE_VIEW.

Изменения в API

  • Название "PreviewView.setImplementationMode()" изменено на "PreviewView.setPreferredImplementationMode()".
  • Название "PreviewView.getImplementationMode()" изменено на "PreviewView.getPreferredImplementationMode()".
  • PreviewView.getSurfaceProvider() заменен на PreviewView.createSurfaceProvider(CameraInfo), который принимает экземпляр CameraInfo, допускающий значение NULL, используемый для оптимизации предварительного просмотра с помощью ImplementationMode.SURFACE_VIEW, когда это возможно. Если передается нулевой экземпляр или вы задаете предпочтительный режим реализации ImplementationMode.TEXTURE_VIEW, то внутри используется ImplementationMode.TEXTURE_VIEW.
  • В следующем примере кода показано, как ранее использовался вариант использования предварительного просмотра с PreviewView.

    preview.setSurfaceProvider(previewView.previewSurfaceProvider)
    cameraProvider.bindToLifecycle(lifecycleOwner, cameraSelector, preview)
    

    Сейчас вы можете написать следующее:

    val camera = cameraProvider.bindToLifecycle(lifecycleOwner, cameraSelector, preview)
    previewView.preferredImplementationMode = ImplementationMode.TEXTURE_VIEW
    preview.setSurfaceProvider(previewView.createSurfaceProvider(camera.cameraInfo))
    
  • К PreviewView.getSurfaceProvider() добавлена аннотация @UiThread, то есть вызов должен выполняться из основного потока. (I192f3)

  • Добавлен метод PreviewView.setScaleType(), который позволяет задать тип масштабирования для предварительного просмотра. Принимает одно из значений в PreviewView.ScaleType. По умолчанию используется PreviewView.ScaleType.FILL_CENTER.

  • Добавлено: PreviewView.getScaleType().

  • Удалена поддержка настройки режима реализации для PreviewView в макете XML с помощью атрибута implementationMode.

  • Добавлен API createMeteringPointFactory() в PreviewView для поддержки преобразования (x, y) из PreviewView в MeteringPoint. (Ib36d7)

Исправление ошибок

  • Исправлены случаи, когда после изменения размера PreviewView отображался неправильный предварительный просмотр. (I71101)

Camera-Extensions версии 1.0.0-alpha08

26 февраля 2020 г.

Выпущены данные "androidx.camera:camera-extensions:1.0.0-alpha08". Версия 1.0.0-alpha08 содержит эти коммиты.

Camera-View версии 1.0.0-alpha08

26 февраля 2020 г.

Выпущены данные "androidx.camera:camera-view:1.0.0-alpha08". Версия 1.0.0-alpha08 содержит эти коммиты.

Исправление ошибок

  • ListenableFuture на SurfaceRequest.provideSurface() заменен на Executor и Callback. Это упрощает API, поскольку больше не требуется обрабатывать исключения в provideSurface(), и гарантирует, что обратный вызов provideSurface() не может быть отменен. Это позволяет предотвратить сбои на старых устройствах, вызванные преждевременным освобождением поверхностей. Объект SurfaceRequest.Result теперь используется для отслеживания того, как SurfaceRequest использует предоставленный Surface. (I7854b)
  • SurfaceRequest.setSurface(Surface) переименован в SurfaceRequest.provideSurface(Surface), а SurfaceRequest.setWillNotComplete() – в SurfaceRequest.willNotProvideSurface(). (I224fe)
  • Исправлена инициализация вариантов приложения с включенным ProGuard за счет сохранения флага, который задает поставщика CameraXConfig по умолчанию. (I2d6c1)

Camera-Extensions, версия 1.0.0-alpha07

10 февраля 2020 г.

Выпущены данные "androidx.camera:camera-extensions:1.0.0-alpha07". Версия 1.0.0-alpha07 содержит эти коммиты.

Исправление ошибок

  • Аргументы, которые ранее передавались в ImageCapture.OnImageSavedCallback.onError() и ImageCapture.OnImageCapturedCallback.onError(), теперь заменены одним аргументом ImageCaptureException, который по-прежнему содержит всю информацию, которая передавалась ранее.
  • Аргумент file, который ранее передавался в ImageCapture.OnImageSavedCallback.onImageSaved(), удален. (I750d2)

Camera-View, версия 1.0.0-alpha07

10 февраля 2020 г.

Выпущены данные "androidx.camera:camera-view:1.0.0-alpha07". Версия 1.0.0-alpha07 содержит эти коммиты.

Изменения в API

  • Теперь в реализации PreviewView TextureView размер TextureView устанавливается равным размеру выходных данных датчика камеры, а затем масштабируется, чтобы заполнить родительский PreviewView. Если вы хотите, чтобы изображение с камеры занимало всю область пользовательского интерфейса (например, весь экран), не задавайте фиксированный размер PreviewView и не используйте атрибут wrap_content. В противном случае изображение с камеры может занимать только часть PreviewView (если размер выходного изображения с датчика камеры меньше). Вместо этого задайте для PreviewView такой же размер, как у родительского элемента (например, с помощью атрибута match_parent). (1204869)

Исправление ошибок

  • В ImageCapture теперь можно сохранять изображения в Uri и OutputStream. Перегруженные методы takePicture объединены в один. Тестовое приложение обновлено, чтобы использовать Uri в качестве канонического примера. (Ia3bec)
  • Сервисный аккаунт Preview.PreviewSurfaceProvider переименован. Новое название: Preview.SurfaceProvider. Теперь разработчикам не нужно создавать собственные ListenableFuture для SurfaceProvider, а Surface предоставляется через новый объект SurfaceRequest. Метод Preview.getPreviewSurfaceProvider() удален, поскольку он может использоваться не по назначению, когда Preview сочетается с другими классами, например PreviewView. (I20105)
  • Аргументы, которые ранее передавались в ImageCapture.OnImageSavedCallback.onError() и ImageCapture.OnImageCapturedCallback.onError(), теперь заменены одним аргументом ImageCaptureException, который по-прежнему содержит всю ранее передаваемую информацию.
  • Аргумент file, который ранее передавался в ImageCapture.OnImageSavedCallback.onImageSaved(), удален. (I750d2)
  • Обновлен API. Методы getZoomRatio(), getMaxZoomRatio(), getMinZoomRatio() и getLinearZoom() класса CameraInfo объединены в метод getZoomState(), который возвращает экземпляр ZoomState. (Ib19fe)

Camera-Extensions версии 1.0.0-alpha06

22 января 2020 г.

Выпущены данные "androidx.camera:camera-extensions:1.0.0-alpha06". Версия 1.0.0-alpha06 содержит эти коммиты.

Обновления

  • Исправлены ошибки и внесены изменения, связанные с Camera Core и Camera2.

Camera-View версии 1.0.0-alpha06

22 января 2020 г.

Выпущены данные "androidx.camera:camera-view:1.0.0-alpha06". Версия 1.0.0-alpha06 содержит эти коммиты.

Обновления

  • Исправлены ошибки и внесены изменения, связанные с Camera Core и Camera2.

Camera-Extensions версии 1.0.0-alpha05

18 декабря 2019 г.

Выпущены данные "androidx.camera:camera-extensions:1.0.0-alpha05". Версия 1.0.0-alpha05 содержит эти коммиты.

Исправление ошибок

  • Обновлено в соответствии с внутренними API Camera Core.

Camera-View версии 1.0.0-alpha05

18 декабря 2019 г.

Выпущены данные "androidx.camera:camera-view:1.0.0-alpha05". Версия 1.0.0-alpha05 содержит эти коммиты.

Известные проблемы

  • При использовании PreviewView соотношение сторон может быть неправильным (b/146215202).

Новые функции

  • Добавлен новый класс PreviewView.TextureViewImplementation, который синхронизирует жизненный цикл SurfaceTexture с использованием поверхности TextureView камерой.

Camera-Extensions версии 1.0.0-alpha04

4 декабря 2019 г.

Выпущены данные "androidx.camera:camera-extensions:1.0.0-alpha04". Версия 1.0.0-alpha04 библиотеки camera-extensions содержит эти коммиты

Изменения в API

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

    val cameraSelector = CameraSelector.DEFAULT_BACK_CAMERA
    val builder = ImageCapture.Builder()
    val bokehImageCaptureExtender = BokehImageCaptureExtender.create(builder)
    if (bokehImageCaptureExtender.isExtensionAvailable(cameraSelector)) {
        bokehImageCaptureExtender.enableExtension(cameraSelector)
    }
    val imageCapture = builder.build()
    mCameraProvider?.bindToLifecycle(this, cameraSelector, imageCapture)
    
  • Прежде чем использовать библиотеку расширений, необходимо инициализировать расширения.

    val availability = ExtensionsManager.init()
    Futures.addCallback<ExtensionsManager.ExtensionsAvailability>(
       availability,
       object : FutureCallback<ExtensionsManager.ExtensionsAvailability> {
           override fun onSuccess(availability: ExtensionsManager.ExtensionsAvailability?) {
               // Ready to make extensions calls
           }
           override fun onFailure(throwable: Throwable) {
               // Extensions could not be initialized
           }
       },
       Executors.newSingleThreadExecutor()
    )
    

Camera-View версии 1.0.0-alpha04

4 декабря 2019 г.

Выпущены данные "androidx.camera:camera-view:1.0.0-alpha04". Версия 1.0.0-alpha04 библиотеки camera-view содержит следующие коммиты

Изменения в API

  • Класс PreviewView позволяет легко отображать выходные данные из варианта использования Preview в приложении.
  • В макет можно включить PreviewView:

    <androidx.camera.view.PreviewView
      android:id="@+id/preview_view"
      … />
    
  • PreviewView предоставляет PreviewSurfaceProvider, чтобы вы могли легко подключить пример использования предварительной версии.

    preview.setPreviewSurfaceProvider(previewView.previewSurfaceProvider)
    
  • В названиях API "ZoomLevel" теперь называется "ZoomRatio"

  • Для некоторых параметров метода изменена допустимость значения NULL.

Camera-Extensions и Camera-View версии 1.0.0-alpha03

9 октября 2019 г.

Данные "androidx.camera:camera-extensions:1.0.0-alpha03" и "androidx.camera:camera-view:1.0.0-alpha03" опубликованы. Вот коммиты, включенные в camera-extensions:1.0.0-alpha03, а вот коммиты, включенные в camera-view:1.0.0-alpha03.

Новые функции

  • Добавлен инициализатор контекста для расширений. Версия расширений изменена на 1.1.0.

Camera-Extensions и Camera-View версии 1.0.0-alpha02

5 сентября 2019 г.

Выход androidx.camera:camera-extensions:1.0.0-alpha02 и androidx.camera:camera-view:1.0.0-alpha02. Вот фиксации, включенные в camera-extensions:1.0.0-alpha02, а вот фиксации, включенные в camera-view:1.0.0-alpha02.

  • Добавлены тесты для проверки правильности реализации временных меток в PreviewImageProcessorImpl.
  • Исправьте сбой при тестировании ExtensionTest на Nexus 5 (уровень API 21) и убедитесь, что предварительная версия доступна.

Camera-Extensions и Camera-View версии 1.0.0-alpha01

7 августа 2019 г.

Выход androidx.camera:camera-extensions:1.0.0-alpha01 и androidx.camera:camera-view:1.0.0-alpha01. Это коммиты, включенные в camera-extensions:1.0.0-alpha01, а это коммиты, включенные в camera-view:1.0.0-alpha01.

  • Добавлена новая библиотека для будущих расширений камеры, которая позволит использовать эффекты на поддерживаемых устройствах. Эта библиотека находится в разработке.
  • Новый класс Camera View. Эта библиотека находится в разработке.