一、Android Camera的架构设计
1、参考的网址
1.1、Android Camera官网框架网址
摄像头 | Android Open Source Project
1.2、Android12平台camera源码参考网址
camera - OpenGrok cross reference for /frameworks/av/camera/
1.3、Android camera2 NDK开发指南
Camera | Android NDK | Android Developers
基于NDK开发的camera应用,运行在Android12的虚拟机上:
1.4、Android camera2 基于framewrok.jar开发接口指南
android.hardware.camera2 | Android Developers
1.5、 Android camera2 基于framewrok.jar开发指南
Camera2 概览 | Android media | Android Developers
2、Android Camera 的概述
Android 的相机硬件抽象层 (HAL) 可将 Camera 2 中较高层级的相机框架 API 连接到底层的相机驱动程序和硬件。
相机子系统包括相机管道组件的实现,而相机 HAL 可提供用于实现您的这些组件版本的接口。
3、Android Camera 的架构图
相机架构:
3.1、应用框架
应用代码位于应用框架级别,它使用 Camera 2 API 与相机硬件进行互动。在内部,此代码会调用相应的 Binder 接口,以访问与相机互动的原生代码。
3.2、AIDL 层代码(framework层的Java)
与 CameraService 关联的 binder 接口可在 frameworks/av/camera/aidl/android/hardware 中找到。
生成的代码会调用较低级别的原生代码以获取对实体相机的访问权限,并返回用于在框架级别创建 CameraDevice 并最终创建 CameraCaptureSession 对象的数据。
frameworks/base/core/java/android/hardware/camera2 代码生成为 framework.jar
frameworks/base/core/jni/Android.bp 全部生成为 libandroid_runtime.so
3.3、native 层(C++)
frameworks/av/camera/Android.bp
3.4、binder IPC 接口
IPC binder 接口用于实现跨越进程边界的通信。调用相机服务的若干个相机 binder 类位于 frameworks/av/camera/camera/aidl/android/hardware 目录中。