第12讲 cameraserver进程启动之CameraDeviceStatus概述

2024年11月02日 第12讲 cameraserver进程启动之CameraDeviceStatus概述 极客笔记

本讲是Android Camera Native Framework专题的第12讲,我们介绍cameraserver进程启动之CameraDeviceStatus概述。

更多资源:

资源 描述
在线课程 极客笔记在线课程
知识星球 星球名称:深入浅出Android Camera 星球ID: 17296815
Wechat 极客笔记圈

Camera Device Status调用总体流程

HIDL Camera Device Status

HAL CameraDeviceStatus状态机如下:

代码定义在:/hardware/interfaces/camera/common/1.0/types.hal

状态 描述
NOT_PRESENT Camera设备在物理上没有插入
ENUMERATING Camera设备物理上插入了,暂时还不能使用,需要等Enumerate结束
PRESENT Camera设备物理上插入了,可以被使用,调用getCameraIdList可以发现该CameraDevice

Framework Camera Device Status

Camera Framework(ICameraServiceListener.aidl)定义的CameraDevice Status:

状态 描述
STATUS_NOT_PRESENT Camera设备在物理上没有插入
STATUS_PRESENT Camera设备物理上插入了,可以被使用
STATUS_ENUMERATING Camera设备物理上插入了,暂时还不能使用,需要等Enumerate结束
STATUS_NOT_AVAILABLE 另外一个Camera App在使用该设备,不能被使用
STATUS_UNKNOWN 仅用于初始化变量

Logical VS Physical VS Logical MultiCam

Case1: App能看到5颗Camera,实际只有3颗物理Camera

  1. Logical 0,1,2都对应一个Physical Camera
  2. Logical multicam 3和4分别对应2个Physical camera
  3. 对App而言,只有Logical multicam才有physical camera的概念,因为非multicam情况下一个logical对应一个physical

Case2: App能看到4颗Camera,实际有3颗物理Camera,Physical 2对App不单独可见

  1. Logical 0,1都对应一个Physical Camera
  2. Logical multicam 3和4分别对应2个Physical camera
  3. 只有Logical multicam 4能用到Physical 2

本文链接:http://so.lmcjl.com/news/16797/

展开阅读全文