Android Camera(一)-框架小结

工作涉及安卓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/camera2
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

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值