自 2025 年 3 月 27 日起,我们建议您使用 android-latest-release
而非 aosp-main
构建 AOSP 并为其做出贡献。如需了解详情,请参阅 AOSP 的变更。
多摄像头支持
使用集合让一切井井有条
根据您的偏好保存内容并对其进行分类。
在外景系统 (EVS) 1.1 中,支持包含多个实体摄像头设备的逻辑摄像头设备。要使用此虚拟设备,设备实现必须支持同步框架。
枚举、打开和关闭逻辑摄像头设备
应用可以使用相同的 IEvsEnumerator
方法使用可用的逻辑摄像头设备。返回的 EvsCamera
对象(代表逻辑摄像头设备)必须在元数据中包含以下各项:
ANDROID_REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
如果返回的 EvsCamera 对象表示逻辑摄像头,则其摄像头元数据必须在其 ANDROID_REQUEST_AVAILABLE_CAPABILITIES
字段中包含此功能键。
ANDROID_LOGICAL_MULTI_CAMERA_PHYSICAL_IDS
字段列出了实体摄像头设备标识符。
ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE
字段可以使用以下任一枚举值:
ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_APPROXIMATE
用于主主模式下的传感器,不执行硬件快门/曝光同步。
ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_CALIBRATED
用于主从模式下的传感器,执行硬件快门/曝光同步。
同步的 GMSL2 摄像头必须具有此值。
应用可以通过新的 getPhysicalCameraInfo(stringcameraId)
方法中的 IEvsCamera
检索实体摄像头设备的描述符。
/**
* Returns the description of the physical camera device that backs this
* logical camera.
*
* If a requested device does not either exist or back this logical device,
* this method returns a null camera descriptor. And, if this is called on
* a physical camera device, this method is the same as getCameraInfo_1_1()
* method if a given device ID is matched. Otherwise, this returns a
* null camera descriptor.
*
* @param deviceId Physical camera device identifier string.
* @return info The description of a member physical camera device.
* This must be the same value as reported by
* EvsEnumerator::getCameraList_1_1().
*/
getPhysicalCameraInfo(string deviceId) generates (CameraDesc info);
所有逻辑摄像头都需要进行静态定义,并且必须通过配置管理器实现进行枚举。由于 EVS 支持对组中的每台设备进行不同的配置,EVS 会提供成员设备列表,并指示图片拍摄是否同步。
<!-- camera group 0 -->
<group id='group0' synchronized='CALIBRATED'>
<caps>
<!-- list of supported controls supported by all physical devices -->
<supported_controls>
<control name='BRIGHTNESS' min='0' max='255'/>
<control name='CONTRAST' min='0' max='255'/>
</supported_controls>
<!-- list of stream configuration supported by all physical devices -->
<stream id='0' width='640' height='480' format='RGBA_8888' framerate='30'/>
</caps>
<!-- list of parameters -->
<characteristics>
<parameter
name='REQUEST_AVAILABLE_CAPABILITIES'
type='enum'
size='1'
value='LOGICAL_MULTI_CAMERA'
/>
<parameter
name='LOGICAL_MULTI_CAMERA_PHYSICAL_IDS'
type='byte[]'
size='2'
value='/dev/video3,/dev/video4'
/>
</characteristics>
</group>
本页面上的内容和代码示例受内容许可部分所述许可的限制。Java 和 OpenJDK 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-07-27。
[null,null,["最后更新时间 (UTC):2025-07-27。"],[],[],null,["# Multi-camera support\n\nIn Exterior View System (EVS) 1.1, the logical camera device that consists of\nmultiple physical camera devices is supported. To use this virtual device, device\nimplementations must support the\n[Synchronization\nFramework](/devices/graphics/sync).\n\nEnumerate, open, and close logical camera device\n------------------------------------------------\n\nThe app can use the same `IEvsEnumerator` methods to use the\navailable logical camera devices. The returned `EvsCamera` object, which\nrepresents a logical camera device, must contain the following items in the metadata:\n\n- [ANDROID_REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA](https://developer.android.com/reference/android/hardware/camera2/CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA) \n If a returned EvsCamera object represents a logical camera, its camera metadata must contain this capability key in its `ANDROID_REQUEST_AVAILABLE_CAPABILITIES` field.\n- `ANDROID_LOGICAL_MULTI_CAMERA_PHYSICAL_IDS` field lists physical camera device identifiers.\n- `ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE` field can have either of below enum values:\n - `ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_APPROXIMATE` is for sensors in master-master mode, no hardware shutter/exposure sync.\n - `ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_CALIBRATED` is for sensors in master-slave mode, hardware shutter/exposure sync. Synchronized GMSL2 cameras must have this value.\n\nThe app can retrieve a descriptor of physical camera devices through\n`IEvsCamera` in the new `getPhysicalCameraInfo(stringcameraId)`\nmethod. \n\n```scilab\n/**\n * Returns the description of the physical camera device that backs this\n * logical camera.\n *\n * If a requested device does not either exist or back this logical device,\n * this method returns a null camera descriptor. And, if this is called on\n * a physical camera device, this method is the same as getCameraInfo_1_1()\n * method if a given device ID is matched. Otherwise, this returns a\n * null camera descriptor.\n *\n * @param deviceId Physical camera device identifier string.\n * @return info The description of a member physical camera device.\n * This must be the same value as reported by\n * EvsEnumerator::getCameraList_1_1().\n */\ngetPhysicalCameraInfo(string deviceId) generates (CameraDesc info);\n```\n\nConfigure multi-camera support\n------------------------------\n\nAll logical cameras are required to be defined statically and must be\nenumerated through a configuration manager implementation. As EVS allows each\ndevice in the group to be configured differently, EVS provides a list of member\ndevices and indicates whether or not the image capture is synchronized. \n\n```gdscript\n\u003c!-- camera group 0 --\u003e\n\u003cgroup id='group0' synchronized='CALIBRATED'\u003e\n \u003ccaps\u003e\n \u003c!-- list of supported controls supported by all physical devices --\u003e\n \u003csupported_controls\u003e\n \u003ccontrol name='BRIGHTNESS' min='0' max='255'/\u003e\n \u003ccontrol name='CONTRAST' min='0' max='255'/\u003e\n \u003c/supported_controls\u003e\n\n \u003c!-- list of stream configuration supported by all physical devices --\u003e\n \u003cstream id='0' width='640' height='480' format='RGBA_8888' framerate='30'/\u003e\n \u003c/caps\u003e\n\n \u003c!-- list of parameters --\u003e\n \u003ccharacteristics\u003e\n \u003cparameter\n name='REQUEST_AVAILABLE_CAPABILITIES'\n type='enum'\n size='1'\n value='LOGICAL_MULTI_CAMERA'\n /\u003e\n \u003cparameter\n name='LOGICAL_MULTI_CAMERA_PHYSICAL_IDS'\n type='byte[]'\n size='2'\n value='/dev/video3,/dev/video4'\n /\u003e\n \u003c/characteristics\u003e\n\u003c/group\u003e\n```"]]