本讲是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
