Capítulo 1: Bienvenido a Android Camera2
Aprenda por qué es importante Android Camera2, cómo se compara con Camera1 y CameraX, qué permite y qué construirá en esta serie.
Capítulo 2: Entendiendo las cámaras de los smartphones
Explore el hardware del módulo de cámara que hay dentro de cada smartphone: la lente, el sensor de imagen, el procesador ISP, la diferencia entre RAW y JPEG, los diseños de cámara múltiple y el viaje completo desde los fotones hasta una foto almacenada.
Capítulo 3: Fotografía moderna con smartphones
Un recorrido por las funciones computacionales y ópticas de los teléfonos modernos: HDR, bokeh de retrato, modo nocturno, cámara lenta, ultra gran angular, teleobjetivo, macro y cómo la fotografía computacional fusiona hardware y software.
Capítulo 4: Explore su propio teléfono
Utilice la aplicación complementaria Android Camera Parameters para inspeccionar su propio dispositivo. Aprenda a leer los ID de cámara, comprobar los niveles de hardware, enumerar las cámaras, inspeccionar los formatos compatibles, las velocidades de fotogramas, los rangos de zoom y la capacidad RAW.
Capítulo 5: Creando su primer proyecto Camera2
Configure un proyecto Android Camera2 completo desde cero. Aprenda sobre los permisos de la cámara, la inicialización de CameraManager, el subprocesamiento en segundo plano con HandlerThread y la configuración del proyecto necesaria para la aceleración de hardware de TextureView.
Capítulo 6: Descubriendo cámaras
Enumere y consulte cada cámara de un dispositivo Android usando CameraCharacteristics. Aprenda la semántica de los ID de cámara, las direcciones de orientación de la lente (frontal/trasera/externa), las cámaras externas USB OTG y la jerarquía de niveles de hardware desde LEGACY hasta LEVEL_3.
Capítulo 7: Abriendo una cámara
Establezca una conexión en vivo con un dispositivo de cámara usando openCamera(). Domine el ciclo de vida de CameraDevice, implemente StateCallback con onOpened/onDisconnected/onError, integre abrir/cerrar con Actividad onPause/onResume y maneje cada código de error de CameraAccessException con control de concurrencia basado en Semaphore.
Capítulo 8: Mostrando la vista previa de la cámara
Renderice fotogramas de cámara en vivo en la pantalla usando TextureView, SurfaceTexture, Surface y CameraCaptureSession. Implemente SurfaceTextureListener, corrija la relación de aspecto con transformaciones de Matrix en configureTransform, construya una CaptureRequest TEMPLATE_PREVIEW e inicie el flujo de vista previa con setRepeatingRequest.
Capítulo 9: Tomando fotos
Capture fotos fijas de alta calidad con Camera2 usando ImageReader (JPEG), disparador AE de precaptura y máquina de estados CaptureCallback. Guarde fotos con MediaStore compatible con Almacenamiento con Alcance (Android 10+) y FileOutputStream heredado, recordando siempre cerrar el búfer de Image.
Capítulo 10: La tubería de Camera2
Inmersión profunda en la arquitectura de la tubería de Camera2: CaptureRequest, CaptureResult, colas de solicitudes, retrollamadas de resultados y el flujo de extremo a extremo desde el envío de la solicitud hasta el procesamiento de la HAL y los resultados.
Capítulo 11: Tipos de captura
Aprenda los tres tipos de captura de Camera2: disparo único (capture), ráfaga (captureBurst) y repetitiva (setRepeatingRequest), además de las plantillas integradas (TEMPLATE_PREVIEW, TEMPLATE_STILL_CAPTURE, TEMPLATE_RECORD y más).
Capítulo 12: Inmersión profunda en CameraCharacteristics
Domine CameraCharacteristics: los metadatos estáticos inmutables que describen cada cámara antes de abrirla. Niveles de hardware (LEGACY, LIMITED, FULL, LEVEL_3, EXTERNAL), banderas de capacidad, organización de claves de metadatos y consultas de capacidad en tiempo de ejecución.
Capítulo 13: Exposición
Domine los fundamentos de la exposición fotográfica: el triángulo de exposición formado por el ISO, la velocidad de obturación y la apertura. Entienda los pasos de EV, la regla Sunny 16 y cómo las diferentes combinaciones crean la misma exposición con compensaciones creativas.
Capítulo 14: Exposición manual en Camera2
Tome el control creativo total de la exposición con la API Android Camera2. Aprenda a desactivar la exposición automática, establecer el ISO manual mediante SENSOR_SENSITIVITY, controlar la velocidad de obturación en nanosegundos con SENSOR_EXPOSURE_TIME y crear ejemplos funcionales en Kotlin para timelapses, exposiciones largas y bracketing.
Capítulo 15: Enfoque
Domine tanto el enfoque automático como el manual en Android Camera2. Entienda los modos de AF, la máquina de estados de AF, las secuencias de disparo y captura de un solo toque, el enfoque manual con dioptrías LENS_FOCUS_DISTANCE, la distancia hiperfocal y la construcción de un control deslizante SeekBar de enfoque en Kotlin.
Capítulo 16: Balance de blancos y color
Controle el color en Android Camera2 con preajustes de Balance de Blancos Automático y corrección de color manual. Aprenda los modos de AWB, la temperatura de color (2000K–10000K), transformaciones de color 3×3, COLOR_CORRECTION_GAINS y código Kotlin funcional para preajustes de atardecer de tonos cálidos y balance de blancos manual completo.
Capítulo 17: La tubería 3A
Orqueste la Exposición Automática (AE), el Enfoque Automático (AF) y el Balance de Blancos Automático (AWB) en una secuencia de captura de fotografía estática fiable. Aprenda el disparador de precaptura, los modos de flash, las máquinas de estado AE/AF y cree código Kotlin de calidad de producción que coordine las tres A antes de cada toma.
Capítulo 18: Fotografía RAW
Domine el formato RAW_SENSOR, la creación de archivos DNG con DngCreator, los patrones Bayer y la captura simultánea de RAW+JPEG en la API Camera2 de Android
Capítulo 19: Video de alta velocidad
Cree capturas de cámara lenta a 120 fps y 240 fps con CameraConstrainedHighSpeedCaptureSession, createHighSpeedRequestList y rangos de FPS de StreamConfigurationMap en la API Camera2 de Android
Capítulo 20: Cámara múltiple
Explore los dispositivos de cámara múltiple lógica de Android 9+, los ID de cámara física, la sincronización de sensores APPROXIMATE frente a CALIBRATED, el cambio de zoom fluido y la captura física dual simultánea mediante OutputConfiguration.setPhysicalCameraId() en la API Camera2
Capítulo 21: HDR y Ultra HDR
Implemente video HDR10 y HLG a través de DynamicRangeProfiles, y capturas fijas JPEG_R de Android 14 (Ultra HDR ISO 21496-1) con arquitectura de SDR-primario + mapa de ganancia para fotos de alto rango dinámico retrocompatibles
Capítulo 22: Extensiones de cámara
Utilice CameraExtensionSession para la fotografía computacional acelerada por el fabricante: modo nocturno, modo retrato Bokeh, extensión HDR, retoque facial y modo automático. Consulte CameraExtensionCharacteristics, gestione la latencia y contraste la arquitectura de las sesiones estándar frente a las de extensión.
Capítulo 23: Retraso de Obturador Cero y Reprocesamiento
Construya el Retraso de Obturador Cero (ZSL) con almacenamiento en búfer YUV/PRIVATE circular, CONTROL_CAPTURE_INTENT_ZERO_SHUTTER_LAG, sesiones de captura reprocesables a través de InputConfiguration, reinyección de fotogramas ImageWriter y createReprocessCaptureRequest para un procesamiento ISP pesado tras la captura. También cubre switchToOffline() para la continuidad del procesamiento en segundo plano.
Capítulo 24: CameraX
Domine CameraX, la biblioteca de cámara de Jetpack con detección del ciclo de vida que envuelve a Camera2. Aprenda la arquitectura UseCase, Camera2Interop para inyectar parámetros manuales y un marco de decisión para elegir entre CameraX y Camera2.
Capítulo 25: Desarrollo de cámara nativa
Pásese al modo nativo con la pila de cámara del NDK de Android. Use ACameraManager para abrir cámaras desde C++, vincule la memoria AHardwareBuffer directamente como texturas de Vulkan para una AR con cero copias y entienda la interoperabilidad OpenGL/Vulkan para tuberías de 60 fps. Incluye el contexto de la migración EVS para automoción.
Capítulo 26: Programación de Cámara Asíncrona
Dome el infierno de las devoluciones de llamada (callbacks) de Camera2 utilizando las corrutinas de Kotlin y Flow. Aprenda suspendCancellableCoroutine para operaciones de un solo disparo (openCamera, createCaptureSession, capture), callbackFlow para flujos continuos de ImageReader y CaptureResult, operadores de combinación para interfaces de usuario reactivas y patrones de seguridad de hilos para evitar ANR y bloqueos (deadlocks).
Capítulo 27: Pruebas de cámara
La guía completa de pruebas de cámara en Android. Entienda Camera ITS (Image Test Suite), qué validan los fabricantes antes del envío (combinaciones de funciones, pruebas de escena, fusión de sensores), las pruebas manuales de CTS Verifier y cómo escribir sus propias pruebas de instrumentación con simulacros de Mockito y pruebas de nivel de hardware parametrizadas que se ejecutan en CI.
Capítulo 28: Arquitectura de Camera2
El gran final de la arquitectura de Camera2. Recorra toda la pila desde su aplicación Kotlin hacia abajo a través de Binder IPC, el Framework, CameraService en nativo, Camera3Device, HAL3 con camera3_device_t, el controlador del kernel V4L2 y, finalmente, el sensor físico, el ISP, la lente VCM y el hardware del flash. Incluye el requisito de Treble HAL, el adaptador LEGACY HAL1 y CameraDeviceSetup de Android 15. Mapa completo del viaje del lector por capas.
Enciclopedia de metadatos de cámara
Guía de referencia completa para todas las claves de metadatos esenciales de CameraCharacteristics, incluyendo las categorías Sensor, Lens, Control, Scaler, Request, Flash, JPEG, Statistics e Info.