第 1 章:欢迎来到 Android Camera2
了解为什么 Android Camera2 如此重要,它如何与 Camera1 和 CameraX 对比,它能实现什么功能,以及你将在这个系列中构建什么。
第 2 章:理解智能手机相机
探索每台智能手机内部的相机模块硬件:镜头、图像传感器、ISP 处理器、RAW 和 JPEG 之间的区别、多摄像头设计,以及从光子到存储照片的完整过程。
第 3 章:现代智能手机摄影
现代手机计算和光学功能巡礼:HDR、人像虚化、夜景模式、慢动作、超广角、长焦、微距,以及计算摄影如何融合硬件和软件。
第 4 章:探索你自己的手机
使用 Android Camera Parameters 配套应用检查你自己的设备。学习读取相机 ID、检查硬件级别、枚举相机、检查支持的格式、帧率、变焦范围以及 RAW 能力。
第 5 章:创建你的第一个 Camera2 项目
从零开始建立一个完整的 Android Camera2 项目。学习相机权限、CameraManager 初始化、使用 HandlerThread 的后台线程,以及 TextureView 硬件加速所需的项目配置。
第 6 章:发现相机
使用 CameraCharacteristics 枚举并查询 Android 设备上的每个摄像头。学习相机 ID 语义、镜头朝向(前置/后置/外部)、外部 USB OTG 摄像头,以及从 LEGACY 到 LEVEL_3 的硬件级别层级。
第 7 章:打开相机
使用 openCamera() 建立与相机设备的实时连接。掌握 CameraDevice 生命周期,实现包含 onOpened/onDisconnected/onError 的 StateCallback,将打开/关闭操作与 Activity 的 onPause/onResume 集成,并使用基于信号量的并发控制处理每个 CameraAccessException 错误代码。
第 8 章:显示相机预览
使用 TextureView、SurfaceTexture、Surface 和 CameraCaptureSession 在屏幕上渲染实时相机画面。实现 SurfaceTextureListener,在 configureTransform 中使用 Matrix 变换校正纵横比,构建 TEMPLATE_PREVIEW 捕获请求,并使用 setRepeatingRequest 启动预览流。
第 9 章:拍照
使用 Camera2 捕获高质量静态照片,利用 ImageReader (JPEG)、预捕获 AE 触发和 CaptureCallback 状态机。使用兼容分区存储的 MediaStore (Android 10+) 和旧版 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 档位、阳光 16 法则,以及不同组合如何通过创意权衡创造相同的曝光。
第 14 章:Camera2 中的手动曝光
利用 Android Camera2 API 完全掌控曝光。学习禁用自动曝光、通过 SENSOR_SENSITIVITY 设置手动 ISO、以纳秒为单位使用 SENSOR_EXPOSURE_TIME 控制快门速度,并构建用于延时摄影、长曝光和包围曝光的 Kotlin 示例。
第 15 章:对焦
在 Android Camera2 中掌握自动和手动对焦。理解 AF 模式、AF 状态机、单次触发拍摄序列、使用 LENS_FOCUS_DISTANCE 屈光度的手动对焦、超焦距,以及在 Kotlin 中构建对焦 SeekBar 滑块。
第 16 章:白平衡与色彩
在 Android Camera2 中利用自动白平衡预设和手动色彩校正来控制色彩。学习 AWB 模式、色温 (2000K–10000K)、3×3 色彩变换、COLOR_CORRECTION_GAINS,以及用于暖色调日落预设和全手动白平衡的 Kotlin 代码。
第 17 章:3A 管线
将自动曝光 (AE)、自动对焦 (AF) 和自动白平衡 (AWB) 编排成可靠的静态摄影捕获序列。学习预捕获触发、闪光灯模式、AE/AF 状态机,并构建在每次拍摄前协调所有三个 A 的生产级 Kotlin 代码。
第 18 章:RAW 摄影
在 Android Camera2 API 中掌握 RAW_SENSOR 格式、使用 DngCreator 创建 DNG 文件、拜耳模式以及同时进行的 RAW+JPEG 捕获
第 19 章:高速视频
使用 CameraConstrainedHighSpeedCaptureSession 实现 120 fps 和 240 fps 高速捕获。学习 createHighSpeedRequestList、硬件限制、FPS 范围,以及如何将高速视频写入磁盘。
第 20 章:多摄像头
探索 Android 9+ 逻辑多摄像头设备、物理相机 ID、APPROXIMATE 与 CALIBRATED 传感器同步、无缝变焦切换,以及在 Camera2 API 中通过 OutputConfiguration.setPhysicalCameraId() 实现的同步双物理拍摄
第 21 章:HDR 与 Ultra HDR
掌握 Android 13+ 10 位 HDR 视频捕获与 Android 14 JPEG_R Ultra HDR 静态照片。学习 DynamicRangeProfiles、HLG、HDR10+ 规格,以及如何在 Camera2 API 中配置 10 位输出 Surface 和增益图元数据。
第 22 章:相机扩展
使用 CameraExtensionSession 调用 OEM 加速的计算摄影:夜景模式、Bokeh 人像模式、HDR 扩展、人脸修容和自动模式。查询 CameraExtensionCharacteristics,管理延迟,并对比标准会话与扩展会话的架构差异。
第 23 章:零快门延迟与重处理
通过环形 YUV/PRIVATE 缓冲、CONTROL_CAPTURE_INTENT_ZERO_SHUTTER_LAG、通过 InputConfiguration 实现的可重处理捕获会话、ImageWriter 帧重新注入以及用于重度后期 ISP 处理的 createReprocessCaptureRequest 构建零快门延迟 (ZSL)。还涵盖了用于后台处理连续性的 switchToOffline()。
第 24 章:CameraX
精通 CameraX,它是封装了 Camera2 的 Jetpack 生命周期感知相机库。学习 UseCase 架构、用于注入手动参数的 Camera2Interop,以及选择 CameraX 或 Camera2 的决策框架。
第 25 章:原生相机开发
使用 Android NDK 相机堆栈进入原生开发。利用 ACameraManager 从 C++ 打开相机,将 AHardwareBuffer 内存直接绑定为 Vulkan 纹理以实现零拷贝 AR,并理解用于 60fps 管线的 OpenGL/Vulkan 互操作。包含汽车 EVS 迁移背景。
第 26 章:异步相机编程
利用 Kotlin 协程和 Flow 驯服 Camera2 的回调地狱。学习用于单次操作 (openCamera, createCaptureSession, capture) 的 suspendCancellableCoroutine,用于连续 ImageReader 和 CaptureResult 流的 callbackFlow,用于响应式 UI 的 combine 操作符,以及防止 ANR 和死锁的线程安全模式。
第 27 章:相机测试
完整的 Android 相机测试指南。理解相机 ITS (Image Test Suite)、OEM 出货前的验证内容(功能组合、场景测试、传感器融合)、CTS Verifier 手动测试,以及如何使用 Mockito mock 和可在 CI 上运行的参数化硬件级别测试来编写你自己的插桩测试。
第 28 章:Camera2 架构
Camera2 架构的大结局。穿越完整堆栈,从你的 Kotlin 应用向下经过 Binder IPC、框架、原生层的 CameraService、Camera3Device、HAL3 以及 camera3_device_t、V4L2 内核驱动,最后到达物理传感器、ISP、VCM 镜头和闪光灯硬件。包括 Treble HAL 要求、LEGACY HAL1 封装器以及 Android 15 的 CameraDeviceSetup。完整的读者旅程图层映射。
摄像头元数据百科全书
CameraCharacteristics 所有核心元数据键的完整参考指南,涵盖 Sensor、Lens、Control、Scaler、Request、Flash、JPEG、Statistics 和 Info 分类。