Перейти к основному содержимому

Mastering Android Camera2 API

Learn the Android Camera2 API from the foundations of smartphone camera hardware to advanced capabilities and metadata.

📄️Глава 3: Возможности современной мобильной фотографии

Обзор вычислительных и оптических функций современных телефонов: HDR, портретное боке, ночной режим, замедленная съемка, сверхширокоугольный объектив, телеобъектив, макросъемка и то, как вычислительная фотография объединяет аппаратное и программное обеспечение.

📄️Глава 4: Изучите свою камеру

Используйте вспомогательное приложение Android Camera Parameters для проверки собственного устройства. Научитесь читать идентификаторы камер, проверять уровни оборудования, перечислять камеры, изучать поддерживаемые форматы, частоту кадров, диапазоны зума и возможности RAW.

📄️Глава 7: Открытие камеры

Установите живое соединение с устройством камеры с помощью openCamera(). Освойте жизненный цикл CameraDevice, реализуйте StateCallback с методами onOpened/onDisconnected/onError, интегрируйте открытие/закрытие с Activity onPause/onResume и обработайте все коды ошибок CameraAccessException с контролем параллелизма на базе Semaphore.

📄️Глава 8: Показ предпросмотра камеры

Отображение живых кадров камеры на экране с помощью TextureView, SurfaceTexture, Surface и CameraCaptureSession. Реализация SurfaceTextureListener, исправление соотношения сторон с помощью матричных преобразований в configureTransform, создание CaptureRequest TEMPLATE_PREVIEW и запуск потока предпросмотра с помощью setRepeatingRequest.

📄️Глава 12: Глубокое погружение в CameraCharacteristics

Изучите CameraCharacteristics — неизменяемые статические метаданные, описывающие каждую камеру до ее открытия. Уровни аппаратной поддержки (LEGACY, LIMITED, FULL, LEVEL_3, EXTERNAL), флаги возможностей, организация ключей метаданных и запросы возможностей во время выполнения.

📄️Глава 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" перед каждым снимком.

📄️Глава 22: Расширения камеры

Используйте CameraExtensionSession для ускоренной OEM вычислительной фотографии: ночной режим, режим боке (портрет), расширение HDR, ретушь лица и автоматический режим. Запрашивайте CameraExtensionCharacteristics, управляйте задержками и сравнивайте архитектуру стандартного сеанса и сеанса расширения.

📄️Глава 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. Полная карта слоев для читателя.