Начиная с 27 марта 2025 г. мы рекомендуем использовать android-latest-release
вместо aosp-main
для создания и участия в AOSP. Дополнительные сведения см. в разделе Изменения в AOSP .
Поддержка нескольких камер
Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
В системе внешнего вида (EVS) 1.1 поддерживается логическое устройство камеры, состоящее из нескольких физических устройств камеры. Чтобы использовать это виртуальное устройство, реализации устройства должны поддерживать Synchronization Framework .
Перечисление, открытие и закрытие логического устройства камеры
Приложение может использовать те же методы 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 должны иметь это значение.
Приложение может получить дескриптор физических камер через IEvsCamera
с помощью нового метода getPhysicalCameraInfo(stringcameraId)
.
/**
* 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 и ее аффилированных лиц.
Последнее обновление: 2025-07-29 UTC.
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2025-07-29 UTC."],[],[],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```"]]