Android Camera2 API
从系统架构到 API 调用顺序,建立完整的 Camera2 心智模型。
课程目录
专题首页负责总览与目录,课时页负责正文与视频权限播放。
第 1 讲
01. Android Camera 架构介绍
我们介绍 Android Camera 架构,站在更高的层次了解现在的 Camera HAL3 架构的由来,以及为何要设计成这样。
第 2 讲
02. Android Camera2 API 概述
介绍 Camera2 API 的核心组件,以及它们如何协同完成相机的各类流程。
第 3 讲
03. Android Camera2 API Open/Close Camera
介绍 Camera2 API 的 Open/Close Camera 部分,理解逻辑相机、物理相机与相机打开关闭流程。
第 4 讲
04. Android Camera2 API GeekCamera2 介绍
介绍 Camera2 API 专题的 GeekCamera2 部分,包括代码下载、编译方式与架构简介。
第 5 讲
05. Android Camera2 API Open、Close Camera代码实现
介绍 Camera2 API 的 Open、Close Camera 代码实现,包括枚举 Camera 数量、判断 Facing、Logical MultiCamera,以及 Open/Close Camera 流程代码。
第 6 讲
06. Android Camera2 API Camera Hardware Level详解
介绍 Camera2 API 的 Camera Hardware Level,包括能力等级划分及判断设备是否支持某个 Hardware Level 的代码实现。
第 7 讲
07. Android Camera2 API REQUEST_AVAILABLE_CAPABILITIES详解
介绍 Camera2 API 的 REQUEST_AVAILABLE_CAPABILITIES,包括各类 Capability 的含义、典型要求,以及判断某个 Camera Feature 是否支持的方法。
第 8 讲
08. Android Camera2 API StreamConfigurationMap详解一
介绍 Camera2 API 的 StreamConfigurationMap,包括概述、输出流配置、Flexible Consumer、Frame Duration,以及 ImageFormat 与 HAL Pixel Format 的对应关系。
第 9 讲
09. Android Camera2 API StreamConfigurationMap详解二
介绍 StreamConfigurationMap 的高帧率流配置、输入流配置与高分辨率流配置,以及 Reprocessing 相关元数据。
第 10 讲
10. Android Camera2 API StreamConfigurationMap实战一
介绍如何使用 StreamConfigurationMap 获取预览 Size 与拍照 JPEG Size,并结合 GeekCamera2 代码分析选型逻辑。
第 11 讲
11. Android Camera2 API StreamConfigurationMap实战二
介绍如何使用 StreamConfigurationMap 获取录像 Size,包括正常帧率与高帧率录像 Size 的筛选逻辑。
第 12 讲
12. Android Camera2 API 为什么需要OutputConfiguration
介绍为什么 Camera2 API 需要引入 OutputConfiguration,以及 Deferred Surface、Surface Group 与 Surface Sharing 的用途和更新流程。
第 13 讲
13. Android Camera2 API OutputConfiguration API详解
介绍 OutputConfiguration 的核心 API,包括 Surface Sharing、Physical Camera ID、Sensor Pixel Mode 与 MultiResolution 输出。
第 14 讲
14. Android Camera2 API Surface Sharing实战
介绍如何在创建 Camera Capture Session 前后配置 Surface Sharing,并结合代码分析 Add Share Surface 的两种时机。
第 15 讲
15. Android Camera2 API Deferred Surface实战
介绍 Deferred Surface 的使用方式,包括通过 Deferred 方式创建 OutputConfiguration,以及 addSurface 和 finalizeOutputConfigurations 的调用流程。
第 16 讲
16. Android Camera2 API Reprocessable Capture Session详解一
介绍 Reprocessable Capture Session 的架构、处理流程,以及不同硬件等级下的 Reprocessing guaranteed stream configurations。
第 17 讲
17. Android Camera2 API Reprocessable Capture Session详解二
介绍 InputConfiguration、Reprocessing 相关 CameraDevice 和 CameraCaptureSession API,以及 ImageWriter 的使用方式。
第 18 讲
18. Android Camera2 API实战 App如何实现ZSL功能
介绍 GeekCamera2 中如何基于 Reprocess 能力完成 ZSL 检测、输入配置与拍照请求创建。
第 19 讲
19. Android Camera2 API SessionConfiguration详解
介绍为什么要引入 SessionConfiguration,以及它如何统一 Session Type、输出流、输入流与 Session Parameter。
第 20 讲
20. Android Camera2 API createCaptureSession详解
介绍 createCaptureSession(SessionConfiguration) 的创建约束、Surface 选型、Regular 流配置表与高帧率会话限制。
第 21 讲
21. Android Camera2 API Session Parameter实战
介绍如何在 App 和 HAL 两侧合理使用 Session Parameter,减少 Session re-configure。
第 22 讲
22. Android Camera2 API CaptureRequest详解
介绍 CaptureRequest 的组成、Builder API、Template Type, 以及 Physical Camera Request 的设置方式。
第 23 讲
23. Android Camera2 API VendorTag实战
介绍 VendorTag 的分类、读写步骤,以及通过自定义 Metadata 获取运动检测结果的实战方式。
第 24 讲
24. Android Camera2 API 获取Physical Camera数据流
介绍如何判断 Logical Multi-Camera 能力、创建 Physical Camera 输出流,以及读取 Physical Camera 结果。
第 25 讲
25. Android Camera2 API CameraCaptureSession详解
介绍 CameraCaptureSession 的职责、StateCallback 状态机、 核心 API 与 Offline/Reprocess 相关能力。
第 26 讲
26. Android Camera2 API CameraCaptureSession.CaptureCallback详解
介绍 CaptureCallback 的各类回调、关键参数含义,以及 Partial Result 与序列完成回调的使用方式。
第 27 讲
27. Android Camera2 API 连拍实战
介绍 GeekCamera2 中连拍、曝光包围和对焦包围的实现路径与请求 下发方式。
第 28 讲
28. Android Camera2 API SlowMotion实战
介绍 Slow Motion 支持能力判断、高速录像 Session 创建、Repeating burst 与 MediaRecorder 配置流程。
第 29 讲
29. Android Camera2 API CaptureResult详解
介绍 CaptureResult 与 TotalCaptureResult 的 API、结果全集含义以及 Physical Camera 结果读取方式。
第 30 讲
30. Android Camera2 API AE自动曝光一
介绍 AE 自动曝光的基础概念、3A 总开关、AE 模式、AE 状态与 Precapture Trigger。
第 31 讲
31. Android Camera2 API AE自动曝光二
介绍曝光补偿、AE Lock、AE 状态转换、AE 测光区域与目标帧率控制。
第 32 讲
32. Android Camera2 API AE自动曝光实战
介绍 GeekCamera2 中 AE 模式、EV 控制与 AE Lock 的实现调用流程。
第 33 讲
33. Android Camera2 API 手动曝光
介绍手动曝光中的 ISO、Sensor Gain、曝光时间和 Frame Duration 相关元数据。
第 34 讲
34. Android Camera2 API 手动曝光实战
介绍 GeekCamera2 中手动调整 ISO、曝光时间和 Frame Duration 的实现流程。
第 35 讲
35. Android Camera2 API Flash闪光灯控制
介绍 Flash 支持能力判断、Flash 模式设置和 CaptureResult 中 Flash 状态读取。
第 36 讲
36. Android Camera2 API 拍照打闪实战
介绍 GeekCamera2 中不同 Flash 模式设置和拍照打闪的调用流程。
第 37 讲
37. Android Camera2 API 通过CropRegion控制Zoom缩放
介绍数字变焦能力查询、SCALER_CROP_REGION 坐标系、裁剪规则与精度控制。
第 38 讲
38. Android Camera2 API 通过Zoom Ratio控制Zoom缩放
介绍 Zoom Ratio 的引入原因、与 Crop Region 的组合关系以及对 3A 和 Physical Camera 的影响。
第 39 讲
39. Android Camera2 API Digital Zoom缩放实战
介绍 GeekCamera2 中数字变焦支持判断、Zoom Steps 计算和 Crop Region 设置流程。
第 40 讲
40. Android Camera2 API Touch AE实战
介绍 Touch AE 支持判断、屏幕坐标转换和 MeteringRectangle 区域计算。
第 41 讲
41. Android Camera2 API AF自动对焦一
介绍 AF 自动对焦模式、AF 状态和不同 AF Mode 下的状态机。
第 42 讲
42. Android Camera2 API AF自动对焦二
介绍 AF Trigger、AF Regions、Focus Range、Lens State 和 Focus Distance 校准质量。
第 43 讲
43. Android Camera2 API AF自动对焦实战
介绍 GeekCamera2 中连续对焦、主动对焦和 Touch AF 的实现流程。
第 44 讲
44. Android Camera2 API 手动对焦实战
介绍 GeekCamera2 中手动对焦支持判断、AF Mode 关闭和 Focus Distance 调整流程。
第 45 讲
45. Android Camera2 API AWB自动白平衡
介绍白平衡原理、AWB 模式、AWB Lock、AWB Region、AWB State 和 Manual AWB。
第 46 讲
46. Android Camera2 API AWB自动白平衡实战
介绍 GeekCamera2 中 AWB Mode、AWB Lock 和手动白平衡的实现流程。
第 47 讲
47. Android Camera2 API FD人脸检测
介绍 Face Detection 模式、Face 检测结果和 GeekCamera2 中画人脸框的实现流程。
第 48 讲
48. Android 13 Camera2 New APIs
介绍 Android 13 Camera2 新增的 Automotive、Torch strength、OutputConfiguration、HDR 和扩展 API。
你会得到什么
这个专题用于建立 Camera2 API 的第一性理解:
- Android Camera 架构演进与 HAL3 全貌
- 核心对象之间的关系
- 打开相机的时序
CameraCaptureSession的职责- 请求和结果回调的配合方式
适合谁
- 刚接触 Android 相机开发的工程师
- 需要把 Camera2 API 使用串起来的应用工程师
- 后续准备深入 Framework / Native Framework 的同学
学习方式
建议先阅读专题首页,再按课时页顺序往下学习。后续的受保护视频和专题支付将在后续步骤接入。
第一讲会先把 Android Camera 架构演进、HAL3 软件栈和 pipeline 全貌讲清,再进入后续 API 细节。
Android 课程