Глава 1: Добро пожаловать в Android Camera2
Узнайте, почему Android Camera2 важен, как он соотносится с Camera1 и CameraX, какие возможности он открывает и что вы создадите в этой серии.
Глава 2: Устройство камер смартфонов
Изучите аппаратное обеспечение модуля камеры внутри каждого смартфона: объектив, датчик изображения, процессор ISP, разницу между RAW и JPEG, конструкции мультикамер и полный путь от фотонов до сохраненного снимка.
Глава 3: Возможности современной мобильной фотографии
Обзор вычислительных и оптических функций современных телефонов: HDR, портретное боке, ночной режим, замедленная съемка, сверхширокоугольный объектив, телеобъектив, макросъемка и то, как вычислительная фотография объединяет аппаратное и программное обеспечение.
Глава 4: Изучите свою камеру
Используйте вспомогательное приложение Android Camera Parameters для проверки собственного устройства. Научитесь читать идентификаторы камер, проверять уровни оборудования, перечислять камеры, изучать поддерживаемые форматы, частоту кадров, диапазоны зума и возможности RAW.
Глава 5: Создание вашего первого проекта на Camera2
Настройте полноценный проект Android Camera2 с нуля. Узнайте о разрешениях камеры, инициализации CameraManager, фоновой многопоточности с HandlerThread и конфигурации проекта, необходимой для аппаратного ускорения TextureView.
Глава 6: Обнаружение камер
Перечисляйте и запрашивайте каждую камеру на устройстве Android с помощью CameraCharacteristics. Узнайте семантику ID камер, направления линз (передняя/задняя/внешняя), внешние камеры USB OTG и иерархию уровней оборудования от LEGACY до LEVEL_3.
Глава 7: Открытие камеры
Установите живое соединение с устройством камеры с помощью openCamera(). Освойте жизненный цикл CameraDevice, реализуйте StateCallback с методами onOpened/onDisconnected/onError, интегрируйте открытие/закрытие с Activity onPause/onResume и обработайте все коды ошибок CameraAccessException с контролем параллелизма на базе Semaphore.
Глава 8: Показ предпросмотра камеры
Отображение живых кадров камеры на экране с помощью TextureView, SurfaceTexture, Surface и CameraCaptureSession. Реализация SurfaceTextureListener, исправление соотношения сторон с помощью матричных преобразований в configureTransform, создание CaptureRequest TEMPLATE_PREVIEW и запуск потока предпросмотра с помощью setRepeatingRequest.
Глава 9: Съемка фотографий
Делайте высококачественные снимки с помощью Camera2, используя ImageReader (JPEG), триггер precapture AE и конечный автомат CaptureCallback. Сохраняйте фотографии с помощью MediaStore (Android 10+), совместимого со Scoped Storage, и устаревшего FileOutputStream, всегда закрывая буфер Image.
Глава 10: Конвейер Camera2
Глубокое погружение в архитектуру конвейера Camera2 — CaptureRequest, CaptureResult, очереди запросов, обратные вызовы результатов и сквозной поток от отправки запроса до обработки в HAL и получения результатов.
Глава 11: Типы захвата
Изучите три типа захвата в Camera2 — одиночный (capture), серийный (captureBurst) и повторяющийся (setRepeatingRequest), а также встроенные шаблоны (TEMPLATE_PREVIEW, TEMPLATE_STILL_CAPTURE, TEMPLATE_RECORD и др.).
Глава 12: Глубокое погружение в CameraCharacteristics
Изучите CameraCharacteristics — неизменяемые статические метаданные, описывающие каждую камеру до ее открытия. Уровни аппаратной поддержки (LEGACY, LIMITED, FULL, LEVEL_3, EXTERNAL), флаги возможностей, организация ключей метаданных и запросы возможностей во время выполнения.
Глава 13: Экспозиция
Освойте основы фотографической экспозиции — треугольник экспозиции из ISO, выдержки и апертуры. Поймите ступени EV, правило «Sunny 16» и то, как различные комбинации создают одну и ту же экспозицию с творческими компромиссами.
Глава 14: Ручная экспозиция в Camera2
Возьмите под полный творческий контроль экспозицию с помощью API Android Camera2. Узнайте, как отключить автоэкспозицию, установить ручное ISO через SENSOR_SENSITIVITY, управлять выдержкой в наносекундах с помощью SENSOR_EXPOSURE_TIME и создайте рабочие примеры на Kotlin для таймлапсов, длинных выдержек и брекетинга.
Глава 15: Фокусировка
Освойте автоматическую и ручную фокусировку в Android Camera2. Разберитесь в режимах AF, конечном автомате AF, последовательностях однократного запуска и захвата, ручной фокусировке с использованием диоптрий LENS_FOCUS_DISTANCE, гиперфокальном расстоянии и создании слайдера SeekBar для фокусировки на Kotlin.
Глава 16: Баланс белого и цвет
Управление цветом в Android Camera2 с помощью предустановок автоматического баланса белого и ручной цветокоррекции. Изучите режимы AWB, цветовую температуру (2000K–10000K), матрицы трансформации 3×3, COLOR_CORRECTION_GAINS и рабочий код на Kotlin для создания теплых закатных пресетов и полного ручного баланса белого.
Глава 17: Конвейер 3A
Координируйте автоматическую экспозицию (AE), автофокусировку (AF) и автоматический баланс белого (AWB) в надежную последовательность захвата фотографий. Узнайте о триггере предварительного захвата, режимах вспышки, конечных автоматах AE/AF и создайте качественный код на Kotlin, который координирует все три "A" перед каждым снимком.
Глава 18: RAW фотография
Освойте формат RAW_SENSOR, создание DNG-файлов с помощью DngCreator, паттерны Байера и одновременный захват RAW+JPEG в API Android Camera2
Глава 19: Высокоскоростное видео
Создание захвата замедленной съемки 120fps и 240fps с помощью CameraConstrainedHighSpeedCaptureSession, createHighSpeedRequestList и диапазонов FPS StreamConfigurationMap в Android Camera2 API
Глава 20: Мультикамера
Изучите логические мультикамерные устройства Android 9+, идентификаторы физических камер, синхронизацию сенсоров APPROXIMATE и CALIBRATED, бесшовное переключение зума и одновременный захват с двух физических камер через OutputConfiguration.setPhysicalCameraId() в API Camera2
Глава 21: HDR & Ultra HDR
Реализация HDR10 и HLG-видео через DynamicRangeProfiles, а также статические снимки JPEG_R (Ultra HDR ISO 21496-1) в Android 14 с архитектурой SDR-первичное + gain-map для обратно-совместимых фотографий с высоким динамическим диапазоном
Глава 22: Расширения камеры
Используйте CameraExtensionSession для ускоренной OEM вычислительной фотографии: ночной режим, режим боке (портрет), расширение HDR, ретушь лица и автоматический режим. Запрашивайте CameraExtensionCharacteristics, управляйте задержками и сравнивайте архитектуру стандартного сеанса и сеанса расширения.
Глава 23: Zero Shutter Lag и переобработка
Реализуйте Zero Shutter Lag (ZSL) с круговым буфером YUV/PRIVATE, CONTROL_CAPTURE_INTENT_ZERO_SHUTTER_LAG, сеансами переобработки через InputConfiguration, реинжекцией кадров ImageWriter и createReprocessCaptureRequest для тяжелой обработки ISP. Также рассмотрено switchToOffline() для фоновой обработки.
Глава 24: CameraX
Освойте CameraX, библиотеку Jetpack для работы с камерами, учитывающую жизненный цикл и являющуюся оберткой над Camera2. Изучите архитектуру UseCase, Camera2Interop для внедрения ручных параметров и методику выбора между CameraX и Camera2.
Глава 25: Нативная разработка камер
Перейдите на нативный уровень со стеком камер Android NDK. Используйте ACameraManager для открытия камер из C++, привязывайте память AHardwareBuffer напрямую как текстуры Vulkan для AR с нулевым копированием и разберитесь во взаимодействии OpenGL/Vulkan для конвейеров 60fps. Включает контекст миграции EVS для автомобилей.
Глава 26: Асинхронное программирование камер
Укротите ад обратных вызовов Camera2 с помощью Kotlin coroutines и Flow. Изучите suspendCancellableCoroutine для однократных операций (открытие камеры, создание сеанса захвата, захват), callbackFlow для непрерывных потоков ImageReader и CaptureResult, операторы combine для реактивных интерфейсов и паттерны потокобезопасности для предотвращения ANR и взаимных блокировок.
Глава 27: Тестирование камеры
Полное руководство по тестированию камер в Android. Разберитесь с Camera ITS (Image Test Suite), узнайте, что производители проверяют перед выпуском (комбинации функций, тесты сцен, слияние сенсоров), познакомьтесь с ручными тестами CTS Verifier и научитесь писать собственные инструментальные тесты с использованием Mockito и параметризованных тестов аппаратного уровня, запускаемых на CI.
Глава 28: Архитектура Camera2
Грандиозный финал архитектуры Camera2. Пройдите весь стек от вашего приложения на Kotlin через Binder IPC, фреймворк, CameraService в нативном коде, Camera3Device, HAL3 с camera3_device_t, драйвер ядра V4L2 и, наконец, физический сенсор, ISP, объектив VCM и вспышку. Включает требования Treble HAL, обертку LEGACY HAL1 и CameraDeviceSetup из Android 15. Полная карта слоев для читателя.
Энциклопедия метаданных камеры
Полный справочник по основным ключам метаданных CameraCharacteristics, включая категории Sensor, Lens, Control, Scaler, Request, Flash, JPEG, Statistics и Info.