需要了解android底层开发,尤其是针对厂商接口对接,我们就需要针对android的HAL层做深入理解,在android的六层架构中,其中HAL层架构在linux驱动层之上,下面我们就来以相机为列做初步了解(官方输出),福利:基础应用开源框架
Android 的相机硬件抽象层 (HAL) 可将 Camera 2 中较高级别的相机框架 API 连接到底层的相机驱动程序和硬件。相机子系统包括相机管道组件的实现,而相机 HAL 则可提供用于实现您的这些组件版本的接口。
注意:如果您要在搭载 Android 8.0 或更高版本的设备上实现相机 HAL,则必须使用 HIDL 接口。要了解旧版组件,请参阅旧版 HAL 组件。
架构
下列图表和列表说明了 HAL 组件:
图 1. 相机架构
应用框架
应用代码位于应用框架级别,它使用 Camera 2 API 与相机硬件进行交互。在内部,此代码会调用相应的 Binder 接口,以访问与该相机互动的原生代码。
AIDL
与 CameraService 关联的 Binder 接口可在 frameworks/av/camera/aidl/android/hardware 中找到。生成的代码会调用较低级别的原生代码以获取对实体相机的访问权限,并返回用于在框架级别创建 CameraDevice 并最终创建 CameraCaptureSession 对象的数据。
原生框架
此框架位于 frameworks/av/
中,并提供相当于 CameraDevice 和