2024年11月03日 第28讲 Camera Native FW 获取CameraCharacteristic流程详解 极客笔记
本讲是Android Camera Native Framework专题的第28讲,我们介绍Camera Native FW的获取CameraCharacteristic流程详解。
更多资源:
资源 | 描述 |
---|---|
在线课程 | 极客笔记在线课程 |
知识星球 | 星球名称:深入浅出Android Camera 星球ID: 17296815 |
极客笔记圈 |
上层问CameraService要CameraCharacteristics时,CameraService就从DeviceInfo3对象中直接获取,不会调用到HAL去
如果是Logical MultiCamera,会针对每一颗Physical Camera调用HAL层的getPhysicalCameraCharacteristics,保存在mPhysicalCameraCharacteristics Map中
不拒绝,则通过Target SDK获取到overrideForPerfClass,传递给CameraProviderManager获取CameraCharacteristics
最后判断是否有Camera权限,如果没有则删除需要权限才能获取的静态Metadata(这里可以优化下,将无权限的静态Metadata缓存起来,不用每次都去操作Metadata)
需要权限的静态Metadata Tag
SystemCameraKind | 描述 |
---|---|
PUBLIC | 对所有应用程序和系统组件都是可见 |
SYSTEM_ONLY_CAMERA | 只对拥有android.permission.SYSTEM_CAMERA权限的进程可见,不会暴露给第三方应用程序 |
HIDDEN_SECURE_CAMERA | 只对HAL应用可见(通过hwbinder线程连接) |
如果是systemClient(uid<10000),则不拒绝
如果systemCameraKind是PUBLIC,则不拒绝
否则
HIDDEN_SECURE_CAMERA,拒绝
SYSTEM_ONLY_CAMERA,是否有SYSTEM_CAMERA权限,如果有则不拒绝,无则拒绝
如果是Hidden physical camera,则从mPhysicalCameraCharacteristics里面获取
否则,判断是否要为PerfClass做Override。如果要做,则返回mCameraCharacteristics,否则返回mCameraCharNoPCOverride
本文链接:http://so.lmcjl.com/news/16928/