Android Camera-框架小结

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

工作涉及安卓Camera的内容做一下笔记

Android Camera的分层

最新的Android Camera的框架如下图所示

image.png
原图:Camera | Android Open Source Project (google.cn)

从上图可知道Camera的框架主要包括三个进程,从上到下大概分为Camera APP,Camera Sevice,Camera HAL进程

Camera App

packages/apps/Camera2/src/com/android/camera/***

Camera App通过AIDL通信调用Camera Sevice的接口,Camera Sevice通过HIDL调用Camera HAL(Camera Provider)的接口

Camera Framework

frameworks/base/core/java/android/hardware/Camera.java
frameworks/base/core/jni/android_hardware_Camera.cpp

该层位于Camera APP和CameraSevice之间封装Camera2 API的实现细节并将APP的请求通过AIDL接口跨进程通信发送至CameraSevice处理并将CameraSevice的结果返回给APP

  • android.hardware.camera2.CameraDevice:提供给APP的编程接口代表一个camera,应用可以此类来对Camera进行拍照等
  • android.hardware.camera2.CameraManger:提供给APP的编程接口应用可以通过此接口获取相机ID列表摄像头信息打开和关闭相机等操作创建Camera状态回调等
getCameraIdList()  返回当前设备中可用的相机列表
getCameraCharacteristics(String cameraId)  根据摄像头id返回该摄像头的相关信息
openCamera(String cameraId, final CameraDevice.StateCallback callback,Handler handler) 打开指定cameraId的相机。参数callback为相机打开时的回调参数handler为callback被调用时所在的线程

CameraSevice

    frameworks/av/camera/
    frameworks/services/camera/libcameraservice/

CameraSevice在Camera FrameWork和CameraProvider之间在安卓系统中进程名为cameraserver,封装AIDL的接口给Framework使用通过HIDL接口跨进程通信请求下发给Camera HAL(Camera Provider)进程,并将结果回传给Framework

  • CameraDeviceClient:实现CameraDevice的功能CameraDevice通过AIDL通信调用本类执行
  • Camera3Device:代表一个Camera,负责与Camera HAL交互
  • CameraService:实现CameraManager的API以及管理系统中的Camera主要的功能是加载系统中的Camera以及打开/关闭Camera
  • CameraProviderManager管理系统中的ICameraProvider

Camera HAL

Camera HAL包括Camera Provider和OEM/ODM自己实现的Camera HAL module,

1.Camera Provider

hardware/interfaces/camera

Camera Provider作为一个独立进程运行在安卓系统中提供HIDL接口供CameraSevice使用

  • ICameraProvider向下调用Camera HAL module,承上启下
  • ICameraDevice代表HAL层级的一个Camera
  • ICameraDeviceSession:封装HAL层级的Camera操作包括拍照摄像硬件配置等

2.Camera HAL module

谷歌提供的Camera HAL module参考

hardware/libhardware/modules/camera

OEM/ODM产商对谷歌Camera HAL3的实现以so库的形式被加载到Camera Provider中接收来自Provider的请求发送命令给驱动接口并将结果上传给Provider

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: android