引言:
主要是针对CameraAPI v2 + HAL3的架构对Android相机系统进行梳理。
相机架构
App和FrameWork
packages/apps/Camer2
frameworks/ex/camera2
Camera API v2;Camera2
CameraDevice:
CameraCaptureSession:
CameraService
AIDL
与CameraService关联的binder接口;
frameworks/av/camera/aidl/android/hardware
原生框架
提供相当于 CameraDevice 和 CameraCaptureSession 类的原生类。
frameworks/av/
CameraDevice:
CameraCaptureSession:
binder IPC接口
实现跨进程通信。
frameworks/av/camera/camera/aidl/android/hardware
ICameraService:
ICameraDeviceUser:
ICameraServiceListener:
ICameraDeviceCallbacks:
相机服务
与HAL交互
frameworks/av/services/camera/libcameraservice/CameraService.cpp
HAL
提供CameraService调用的相机硬件运行标准接口的实现
HIDL
实现适用于CameraProvider,CameraDevice,CameraDeviceSession
hardware/interfaces/camera
实现HAL
HAL层是位于相机驱动和Android Frameworks之间。
HAL定义了必须实现的接口,以便应用可以正确地操作相机硬件
ICameraProvider:
ICameraDevice:
ICameraDeviceSession: