本讲是Android Camera Native Framework专题的第12讲,我们介绍cameraserver进程启动之CameraDeviceStatus概述。
更多资源:
资源 | 描述 |
---|---|
在线课程 | 极客笔记在线课程 |
知识星球 | 星球名称:深入浅出Android Camera 星球ID: 17296815 |
极客笔记圈 |
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
- Logical 0,1,2都对应一个Physical Camera
- Logical multicam 3和4分别对应2个Physical camera
- 对App而言,只有Logical multicam才有physical camera的概念,因为非multicam情况下一个logical对应一个physical
Case2: App能看到4颗Camera,实际有3颗物理Camera,Physical 2对App不单独可见
- Logical 0,1都对应一个Physical Camera
- Logical multicam 3和4分别对应2个Physical camera
- 只有Logical multicam 4能用到Physical 2