Android Camera 框架全景解析2
三、Android Camera API 演进与技术对比
3.1 API 演进历程
阶段 | 时间线 | 核心特性 | 代表版本 |
---|---|---|---|
Camera1 | Android 1.0-5.0 | 基础相机控制、同步操作、有限参数调节 | android.hardware.Camera |
Camera2 | Android 5.0+ | 异步操作、多摄像头支持、RAW图像捕获、精细参数控制 | android.hardware.camera2 |
CameraX | Android Jetpack 组件 | 生命周期感知、设备无关性、简化API、扩展功能(HDR/美颜) | androidx.camera |
3.1.1 Camera1 API(已弃用)
- 引入时间:Android 1.0(2008年)
- 核心特点:
- 通过
android.hardware.Camera
类直接控制相机硬件。 - 提供基础功能:拍照、录像、预览,但控制粒度较粗。
- 局限性:
- 仅支持单线程同步操作,易阻塞UI线程。
- 兼容性差,不同厂商设备行为不一致。
- 不支持RAW图像、手动曝光等高级功能。
- 通过
3.1.2 Camera2 API(主流选择)
- 引入时间:Android 5.0(API 21,2014年)
- 核心特点:
- 基于
CameraManager
、CameraDevice
、CaptureSession
的异步架构。 - 支持精细控制:手动对焦、曝光时间、ISO、白平衡等。
- 新增功能:零延迟连拍、RAW图像捕获、多摄像头并发访问。
- 优势:
- 性能提升:通过
Pipeline
架构实现低延迟图像处理。 - 兼容性优化:统一接口适配不同硬件。
- 性能提升:通过
- 基于
3.1.3 CameraX(推荐方案)
- 引入时间:2019年(Jetpack组件)
- 核心特点:
- 基于Camera2封装,提供生命周期感知的API。
- 自动处理设备兼容性,支持90%以上的Android设备。
- 内置扩展功能:HDR、美颜、人像模式(需硬件支持)。
- 开发效率:
- 代码量减少50%,支持Kotlin协程。
- 提供
PreviewView
等组件简化UI集成。
3.2 技术对比表
维度 | Camera1 | Camera2 | CameraX |
---|---|---|---|
架构 | 同步操作,直接访问硬件 | 异步管道模型,通过CameraManager 管理 |
基于Camera2封装,生命周期感知 |
代码复杂度 | 简单(约200行基础功能& |